【发布时间】:2019-05-03 04:27:10
【问题描述】:
我有四个具有相同脚本和相同布尔值的游戏对象,当其中一个被射线击中时,布尔状态为真,但该函数不会启动,因为其他三个游戏对象设置为 false。
我尝试了什么:
- 代码在最后一个被实例化的对象上运行良好
- 如果我在第一个对象上禁用脚本并重新启用它,则该功能仅在此对象上正常工作
public bool selected;
void Start(){
selected = false;
}
void Update(){
showRange ();
}
public void showRange(){
if (selected == true) {
for (int i = 0; i < tileRange.Count; i++) {
tileRange [i].GetComponent<SpriteRenderer> ().enabled = true;
}
} else {
for (int i = 0; i < tileRange.Count; i++) {
tileRange [i].GetComponent<SpriteRenderer> ().enabled = false;
}
}
}
【问题讨论】:
-
尝试将
public bool selected更改为public static bool selected。 -
最简单的解决方案是使用静态变量。你实际上可以简化你的 ShowRange() 方法:
public void showRange(){ foreach(var tile in tileRange) { tile.GetComponent<SpriteRenderer> ().enabled = selected; } } -
这是关于c#,而不是unityscript。
标签: c# unity3d game-development