再次考试的时间,所以我在这里,并再次对我的代码提出一些小问题。
我的目标是,能够在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");
}
这就是改变变量的代码,现在
答案 0 :(得分:2)
查找只返回一个对象,而不是多个。尝试使用FindObjectsOfType
MovingBlocks[] movingBlocks = FindObjectsOfType<MovingBlocks>();
这也意味着你需要迭代所有这些来改变所有这些变量的canSwitch变量。
foreach (MovingBlocks m in movingBlocks)
m.canSwitch = false;