所以在统一中我有一个包含画布的预制件
此预制件在运行时实例化,可在整个游戏中多次实例化
现在让我们假设游戏中存在2个预制件Barracks
如果我点击Barracks#1
private void OnBarrackClick(){
if (Input.GetMouseButtonDown (0) && !GameManager.Instance.buildModeActive) {
RaycastHit hit;
if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit, 25.0f, LayerMask.GetMask ("Barrack"))) {
this.trainingMenu.SetActive (true);
}
}
}
然后我将获得军营#1和#2
的菜单但是我在这个UI上也有一个退出按钮
public void ExitTrainingMenu(){
this.trainingMenu.SetActive (false);
}
通过位于ui上的退出按钮调用此退出功能,只有通过代码调用SetActive
功能并显示所有菜单时,它才会退出该兵营的菜单
应该发生的事情只是点击营房的用户界面应该显示
如何修复此错误并了解其原因?
为了更好地证明这一点,我在这里上传了一个视频
http://kot90.altervista.org/survius/display.php?name=IGt6yCrYgV
答案 0 :(得分:2)
您不会将点击次数与单个建筑物区分开来。你只是在检查...
GameManager.Instance.buildModeActive
是假的吗? (两个军营都是如此)如果所有这些事情都过去了,请显示用户界面。
但你有两个营房。哪一个被击中了?它是我的营房对象还是其他一些军营对象?
答案 1 :(得分:0)
Draco18s已经解释了原因,但实现目标的最简单方法是使用
void OnMouseDown()
{
Debug.Log("OnMouseDown");
canvasObject.SetActive(true);
}
注意:确保将对撞机附加到游戏对象。