2014-02-05 10 views
0

есть простой код UnityScript, чтобы скрыть и отобразить куб или любые другие игровые объекты для определенного времени?сделать куб скрытым в течение нескольких секунд и отобразить его снова в течение секунд.

//make the object invisible 
renderer.enabled = false; 

// make the object visible 
renderer.enabled = true; 

// toggle object's visibility each second 
function Update() { 

// Find out whether current second is odd or even 
var seconds : int = Time.time; 


// Enable renderer accordingly 
renderer.enabled = oddeven; 

ответ

1

Вы хотите спрятать объект, скрыть сопрограмму, которая ждет N секунд, а затем показать.

Это C#, преобразование в Javascript должен быть простым, но я не думаю, что JS использует startCoroutine (This page в документации объясняет разницу между C# и версии JavaScript).

public bool Hide = false; 


void Update() 
{ 
    if (Hide && renderer.enabled) { 
     renderer.enabled = false; 
     Hide = false; 
     StartCoroutine("WaitUnhide"); 
    } 
} 


IEnumerator WaitUnhide() 
{ 
    yield return (new WaitForSeconds(2)); 
    renderer.enabled = true; 
} 

В этой версии вы должны установить переменную 'hide' из какого-либо другого кода, чтобы начать скрывать. Hide && renderer.enabled означает, что вы не можете запустить новую шкуру до тех пор, пока не будет завершена старая - это не единственный способ сделать это, но она избегает дублирования нескольких скрытых/скрытых объектов.

Чтобы сделать бесконечный цикл:

void Start() 
    { 
    StartCoroutine("HideUnhide"); 
    } 


    IEnumerator HideUnhide() 
    { 
    while (true) { 
     yield return (new WaitForSeconds(2)); 
     renderer.enabled = true; 
     yield return (new WaitForSeconds(2)); 
     renderer.enabled = false; 
     } 

    } 
+0

Я хочу, чтобы он зацикливался, скрывая, скрывая, скрывая, показывая на несколько секунд. – user2992277

+0

Спасибо большое господин theodox :) – user2992277

1

Чтобы показать/скрыть объект игры, а не с помощью render.enabled собственности, вы должны использовать

// Deactivates the game object. 
gameObject.SetActive (false); 

Более подробную информацию можно найти here.

Чтобы вызвать эту функцию периодически, как сказал theodox, startCoroutine - твой друг.

+0

Будет ли gameObject еще обновляться, если SetActive выключен? – theodox

+0

Нет. Неактивные объекты не обновляются. – David

Смежные вопросы