[英]Deactivate other gameObject's script
I am using one script for multiple gameObjects.我正在为多个游戏对象使用一个脚本。 If my current gameObject is triggered, I want the script to be deactivated on all other gameObjects except for current gameObject.
如果我当前的游戏对象被触发,我希望在除当前游戏对象之外的所有其他游戏对象上停用该脚本。 I can set current script to be active after I have disabled it.
禁用后,我可以将当前脚本设置为活动状态。 But I do not want it to be enabled as false at all.
但我根本不希望它被启用为假。 How do I achieve this?
我如何实现这一目标?
public MyScript[] myScript;
void Start () {
myScript= FindObjectsOfType (typeof (MyScript)) as MyScript[];
}
void Activated() {
for (int i = 0; i < myScript.Length; i++) {
myScript[i].enabled = false; //All other scripts except for current gameObject's script
}
Something like this.像这样的东西。
public class MyScript : MonoBehaviour
{
public static event Action<GameObject> Triggered;
private void Start()
{
MyScript.Triggered += OnTriggered;
}
private void OnTriggered(GameObject triggeredGameObject)
{
if (triggeredGameObject != gameObject)
{
enabled = false;
}
}
private void OnTriggerEnter(Collider other)
{
Triggered?.Invoke(gameObject);
}
}
You need to pass your triggered gameobject into the Activated function somehow so you make a comparison您需要以某种方式将触发的游戏对象传递给 Activated function 以便进行比较
public MyScript[] myScript;
void Start () {
myScript= FindObjectsOfType (typeof (MyScript)) as MyScript[];
}
void Activated(GameObject triggeredGameObject)// pass the triggered gameobject here
{
for (int i = 0; i < myScript.Length; i++)
{
if(triggeredGameObject != myScript[i].gameObject)
myScript[i].enabled = false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.