Coroutine은 yield구문을 만다면 곧바로 실행이 됩니다.
스크립트를 중지하거나 제거하면 yield이후의 구문은 실행되지 않습니다.
아래는 잘못된 코드입니다.
void Update()
{
if(health < 0)
{
StartCoroutine(Die());
Destroy(gameObject); //or enabled = false;
}
}
IEnumerator Die()
{
animation.Play("wobble");
yield return new WaitForSeconds(3);
//This will never be called
animation.Play("die");
}
아래와 같이 수정해야 정상동작을 수행합니다.
bool dying;
void Update()
{
if(dying) return;
if(health < 0)
{
StartCoroutine(Die());
}
}
IEnumerator Die()
{
dying = true;
animation.Play("wobble");
yield return new WaitForSeconds(3);
animation.Play("die");
yield return new WaitForSeconds(3);
Destroy(gameObject);
}
피드 구독하기:
댓글 (Atom)
-
대상이 되는 이미지를 SVG(Scalable Vector Graphics) 이미지로 변환 - 각종 툴이나 웹상에서 바로 바꿔주는 다양한 방법이 있음(검색 검색~) - 찾은거 하나 : http://image.online-convert.com/c...
-
MQTT mosquitto 서버 설치와 간이 테스트 https://mosquitto.org 모스키토 설치 brew install mosquitto 모스키토 서비스 실행 brew services start mosquitto 모스키...
-
Unity3d에서 Rust 라이브러리를 생성하여 rust함수를 호출해 보기 Rust를 사용하여 라이브러리를 생성/빌드 한 뒤 유니티에서 Plugin으로 dll import하여 함수 사용 -- Rust -- 숫자 2개를 더해 리턴하는 간단한 ...
댓글 없음:
댓글 쓰기