2016-07-04 8 views
0

"x"시간에 개체를 respawn하려고하지만 yield 및 startcourutine을 사용하면 코드에서 많은 오류와 실수가 발생합니다. 대신 개체를 숨기고 지연 후에 respawn 할 때 다시 사용할 수 있도록하려면 파괴하는 대신. 배열이 있으면 어떻게 가능합니까? 이 작업을 수행 할 수있는 동일한 위치에 직접적인 부활에 대한지연 후 단일성 respawn

답변

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()'코 루틴에 할당하십시오. – Iggy

+0

아니요, (SetActive 대신) 코 루틴에서 호출하여 gameobject를 매개 변수로 전달할 수 있습니다. 그런 다음'Instantiate' 대신에'SetActive'를 호출합니다 (SetActive를 앞뒤로하면 위치를 설정해도 상관 없습니다). –