boolean不能在多个对象上设置

时间:2014-06-16 17:44:02

标签: c# unity3d boolean

再次考试的时间,所以我在这里,并再次对我的代码提出一些小问题。

我的目标是,能够在buttonpress上切换块(工作得很好),现在我添加了一个触发器,它将布尔值设置为false,所以我不能再移动这些块了。这也有效......但仅限于我想要移动的最后一组Block。

我用过(正常吗?):

movingBlocks = GameObject.Find("SwitchableCube").GetComponent<MovingBlocks>();

获取对我需要切换的脚本的访问权限。我尝试通过函数更改变量,只需更改它。 Unity或C#中是否有任何不允许在多个对象上设置单个变量的内容?

感谢您的所有帮助

(如果我错过了发布解决方案的任何主题,我很抱歉,但我真的不确定我在搜索中需要覆盖的内容)

编辑: void OnTriggerEnter(Collider other) { if (other.CompareTag("DeadZone")) { movingBlocks.canSwitch = false; Debug.Log("Did enter"); Debug.Log (movingBlocks.canSwitch); } } void OnTriggerExit() { movingBlocks.canSwitch = false; Debug.Log("probably set it on true again...without any reason"); } 这就是改变变量的代码,现在

1 个答案:

答案 0 :(得分:2)

查找只返回一个对象,而不是多个。尝试使用FindObjectsOfType

MovingBlocks[] movingBlocks = FindObjectsOfType<MovingBlocks>();

这也意味着你需要迭代所有这些来改变所有这些变量的canSwitch变量。

foreach (MovingBlocks m in movingBlocks)
     m.canSwitch = false;