2016-07-04 2 views
0

Я пытаюсь повторно выделить объект в «х» времени, однако, когда я использую доходность и startcourutine, это вызывает много ошибок и ошибок в моем коде. и вместо того, чтобы уничтожать, я хочу скрыть объект и снова включить его после того, как я его повторно задержу после задержки. как это возможно, если у меня есть массивы?Единство респауна после задержки

ответ

1

Для прямого респауна на том же положении, вы можете сделать это:

public class CrateCrash : MonoBehaviour 
{ 
    ... 

    public void InitRespawn(GameObject toRespawn) 
    { 
     StartCoroutine(RespawnObject(toRespawn, 5.0f)); 
    } 

    private IEnumerator RespawnObject(GameObject toRespawn, float delay) 
    { 
     yield return new WaitForSeconds(delay); 
     toRespawn.SetActive(true); 
    } 
} 

Другой класс:

using UnityEngine; 
using System.Collections; 


public class Crate : MonoBehaviour 
{ 
    CrateCrash manager;  

    public void OnMouseDown() 
    { 
     manager.InitRespawn(gameObject); 

     gameObject.SetActive(true); 

    } 

    public void SetManagerReference(CrateCrash managerRef) 
    { 
     manager = managerRef; 
    }  
} 
+0

Эй Гуннар! Спасибо, ваш следующий код делает то, что я хочу, но он просто отключает объект и снова возвращает его. Я хочу назначить для него новую доступную позицию, которую у меня есть, и новый тип – David

+0

@Alex. Назначьте свою новую позицию и введите в ответ 'RespawnObject()' coroutine. – Iggy

+0

Нет, вы можете вызвать их из сопрограммы (вместо «SetActive») и передать игровой объект в качестве параметра. Затем вместо использования 'Instantiate' вы вызываете« SetActive »там (и устанавливаете позицию, неважно, делаете ли вы это до или после« SetActive »). –

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