【发布时间】:2018-11-20 09:14:37
【问题描述】:
假设我们在场景中有两个圆柱体,上面有红色和蓝色的材质。此外,我们有两个红色和蓝色背景的 UI 图像。现在,我应该怎么做才能使红色图像只能拖动到红色圆柱体上,而蓝色图像只能拖动到蓝色圆柱体上。
如果我将红色图像拖到蓝色圆柱体上,则会出现错误消息:
在红色圆柱上拖动蓝色图像也是如此,反之亦然。
见下图
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class wrench : MonoBehaviour {
public bool Dragging = false;
public bool collision = false;
Vector3 position;
public List<GameObject> UIimages;
public void BeginDrag() {
position = gameObject.transform.position;
Dragging = true;
foreach (GameObject obj in UIimages) {
obj.GetComponent<BoxCollider2D> ().enabled = false;
}
}
public void Drag() {
transform.position = Input.mousePosition;
}
public void Drop() {
if (!collision) {
gameObject.transform.position = position;
}
Dragging = false;
}
}
【问题讨论】:
-
你可以使用碰撞器和标签来检查它,你知道它们是如何工作的吗?
-
@Lotan 我知道,但我不知道在这种情况下如何使用它们,因为将来如果我的场景中有这么多对象,我将不得不为每个对象编写单独的单独脚本跨度>
-
@Lotan 拖动工作非常好我只希望红色只能在一个与蓝色相同的红色圆柱体上拖动
-
@Lotan 请检查我的问题我已经在这段代码中发布了代码我使用了禁用其他对象上所有对撞机的列表,但是如果我完成了拖动红色图像,如何重新启用它在红色圆柱上,然后我想在蓝色圆柱上拖动蓝色图像,但它无法检测到碰撞,因为它的对撞机被禁用
-
对不起 Nouman 但我不明白你的意思,试着用不同的方式解释它^^'
标签: c# user-interface unity3d