본문 바로가기

정리 카테고리/API

Unity_비동기를 위한 Coroutines +waitForSeconds



function Fade() { for (var f = 1.0; f >= 0; f -= 0.1) { var c = renderer.material.color; c.a = f; renderer.material.color = c; yield;

}



함수에 yield를 입력을 해주면 Unity에서는 이것을 Coroutines으로 인식한다.


function Update() { if (Input.GetKeyDown("f")) { Fade(); } 

}


위와 같이 호출하여 사용한다.




활용은 API에서 알려주는 활용 예시는 아래와 같다


function ProximityCheck() {

for (int i = 0; i < enemies.Length; i++) { if (Vector3.Distance(transform.position, enemies[i].transform.position) < dangerDistance) { return true; } } return false; }


위의 내용은 몬스터가 근접했을때 경고를 주는 내용이라고 한다.

(서로의 위치(position)를 비교하여 위험 범위 안이면 true를 반환하는것으로 보인다.)


이와 같은 소스가 여러마리일때 적용되면 불필요한 작업이 되어진다.


IEnumerator DoCheck() { for(;;) { ProximityCheck; yield return new WaitForSeconds(.1f); } }



위의 소스처럼 작성하게 되면 1/10초마다 호출할수 있게 된다.


1/10초를 기다리게 하는 기능 waitForSeconds


https://docs.unity3d.com/ScriptReference/WaitForSeconds-ctor.html


public WaitForSeconds(float seconds);