2016-12-06 98 views
0

所以我有2个游戏对象。第一个游戏对象是setActive(false);第二个游戏对象是我触发时的第一个游戏对象,第一个游戏对象必须是setActive(true);但我似乎无法做到这一点..即时通讯只是在Unity当触发另一个游戏对象时取消隐藏游戏对象

初学者
#pragma strict 
function Start() 
{ 
GameObject.Find("jumpImage").SetActive(false); 
} 

function OnTriggerEnter(col:Collider) 
{ 


if(col.tag=="Player") 
     { 
     GameObject.Find("jumpImage").SetActive(true); 

     }  
} 

回答

0

GameObject.Find只能找到“主动”的游戏对象,你可以在文档中看到GameObject.Find。这就是说,如果你在Start和OnTriggerEnter函数之间引用了相同的GameObject,那么在你第一次找到它的时候你可能会保存一个引用。

#pragma strict 

var jumpImageGO : GameObject; 

function Start() 
{ 
    jumpImageGO = GameObject.Find("jumpImage"); 
    if (jumpImageGO != null) 
     jumpImageGO.SetActive(false); 
} 

function OnTriggerEnter(col:Collider) 
{ 
    if(col.tag=="Player") 
    { 
     jumpImageGO.SetActive(true); 
    }  
} 
+0

感谢您的帮助它的工作原理:d –

+0

先生。当我想将它设置为活动状态时,我可以添加延迟吗? –

+0

当然,只需使用[Coroutine](https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html)并设置延迟或使用[WaitForSeconds](https://docs.unity3d.com/ScriptReference/ WaitForSeconds.html)。 – Landern