说我有3个名为BOB,ABE,GUY
的脚本在脚本BOB中,我想启用ABE,并禁用GUY ...如何使用c#实现统一?
答案 0 :(得分:1)
首先,您需要知道要启用/禁用脚本的gameObject。例如,如果BOB,ABE和GUY都在同一个对象上,你可以在BOB的代码中说:
this.GetComponent<ABE>().enabled = false; //disable ABE
this.GetComponent<GUY>().enabled = true; //enable GUY
如果您尝试禁用的脚本位于不同的游戏对象上,则必须拥有该对象。参见:
GameObject.Find
GameObject.FindWithTag
或许如果您正在处理碰撞,请参阅:
答案 1 :(得分:1)
如果您已将所有三个脚本都添加到同一个GameObject
中,那么我会说 James Hogle 回答。
如果所有脚本都不同GameObjects
,那么要在GUY
中停用BOB
,您可以在BOB
中使用以下代码
GUY guy = FindObjectOfType<GUY>();
guy.enabled = false;
同样,您可以使用它来设置true
或将其设为enable
答案 2 :(得分:0)
由于性能(尤其是在运行时),最好避免在Unity中使用GameObject.Find以及GameObject.GetComponent。
一个更好的解决方案是使ABE和GUY均为静态:
GUY.cs :
public class GUY : MonoBehaviour {
public static GUY guy;
void Awake () {
guy = this;
}
}
ABE.cs:
public class ABE : MonoBehaviour {
public static ABE abe;
void Awake () {
abe = this;
}
}
现在,由于您是用这种方式(静态)编写其他脚本,因此您只需执行以下操作即可:
BOB.cs:
// Enable ABE
ABE.abe.enabled = true;
// Disable GUY
GUY.guy.enabled = false;
有关此主题的更多信息: