2015-07-12 7 views
1

Здесь я использовал SetActive (true), чтобы включить мой объект gameObject, но он не работает. Я попытался использовать различные функции и объекты, которые могут включить мой gameObj, как это видно в коде. Но ничего не работает. Хотя, когда я устанавливаю setActive (false), он работает, но это не означает setActive (true). Я не знаю причины. Кто-нибудь может мне помочь? Кстати, я использую версию Unity 4.3.4.Unity 2D SetActive() не работает

if (paddle.life == 1) { 
       GameObject life_2 = GameObject.Find ("life2"); 
       GameObject lost = GameObject.Find("lostlife"); 
       life_2.SetActive (false); 
       lost.SetActive(true); 
       //lost.active = true; 
       //lost.renderer.enabled = true;(why null ref) 

       //after some secs disable the message 
       //Destroy(lost, 4); 
      } 
+0

Определение "не работает" - что на самом деле происходит? –

+0

попытайтесь отладить свой код. использование контрольных точек может быть. это должно быть что-то не так с вашей логикой кода. –

+0

Вызывающий набор активирует только флаг localActive для значения, которое вы даете в функции. Если родительский игровой объект отключен, никто из детей не станет активным –

ответ

1

Часть из unity doc for GameObject.Find:

Если ни одна игра объекта с именем не найден, возвращается нуль. Если имя содержит символ '/', он будет пересекать иерархию, как путь . Эта функция возвращает только активные игровые объекты.

Возможно, вам нужно ссылаться на свой gameObject в скрипте в качестве параметра. Таким образом, у вас есть ссылка на gameObject (независимо от того, активна она или нет), и тогда она должна работать.

0

вы использовали:

lost.active = false; 

и

lost.renderer.enabled = false; 

но главная заключается в следующем:

lost.enabled = false; 
Смежные вопросы