Coroutine(4)
-
StopCoroutine() 의 활용 2 - Coroutine continue failure
앞서 정리한 스탑코루틴의 활용 1의 내용으로 개념을 잡고 넘어가자. 코루틴 호출은 script.StartCoroutine() 으로 호출하게 되어있고, 앞부분을 생략하고 StartCoroutine()으로 호출하면 자동적으로 콜링한 스크립트에서 제어하는 코루틴으로 호출되도록 되어있다. 즉 StartCoroutine( ~~~ ) 를 포함하여 코루틴을 호출하면 이 코루틴은 자신을 콜링한 스크립트가 달려있는 게임오브젝트에 할당되는 것이다. 이것이 적용되어 해당 게임오브젝트를 disable시키면, 그 게임오브젝트에 할당되어 돌아가던 모든 코루틴은 정지된다. (StopAllCoroutine의 효과) 위의 그림을 참고하자. 위 그림은 이런 상황을 거친 결과다 Scr Main=== start() { StartCorout..
2015.10.14 -
KhjCoroutines - ScaleChange
앞서서의 알파 체인지의 경우 지정값없이 0에서 1 혹은 1에서0이 되는 코루틴이었습니다. 변수몇개만 더 추가해서 작성한다면 지정된 값에서 지정된값까지 변화하는 코루틴으로 구성하는것은 쉬운 일일것입니다. 알파대신 이번에는 스케일을 변화시키는 코루틴 로직을 통해서 지정값에서 지정값으로 변화시키는 문장을 작성해 봅시다. //스케일값 변환하는 코루틴을 만들어봅시다 //totalTime기간동안 img의 스케일을 crescendo면 min->max 반대는 max->min으로 조정해준다 public IEnumerator ScaleChange(UISprite img, bool crescendo, float minScale, float maxScale, float totalTime ) { yield return new ..
2014.07.30 -
KhjCoroutines - AlphaChange
이 게시판에서는 기본적인 동작을 가진 코루틴들을 하나씩 만들어보겠습니다. NGUI 와 애니메이션으로도 충분히 처리 가능한 로직들이지만, 코루틴을 모아서 스크립트로 구현해두고 때에 따라 불러서 사용하면 어떤 프로젝트를 진행하든 자신에 손에 익은 로직으로 구현할수 있는 훌륭한 자산이 될수 있습니다. 개인적으로 애니매이션은 하나의 애니메이션만 동작시킬수 있고, 때에 따라서는 지정된 값이 아닌, 변수값으로 위치정보 등을 받아와야 할 경우 활용이 애매했던 경험이 있습니다. 코루틴은 동작마다 구분지어 놓으면 각자의 코루틴의 제역할을 해냅니다. 물론 퍼포먼스의 속도나 메모리사용에 관한 점에 대해서는 다른 관점이 있을수 있겠습니다. 다만 코루틴 퍼포먼스가 생각만큼 느리지 않고, 효율적인 면이 있다는 것은 다음에 기회가..
2014.07.29 -
코루틴 기본형태
유니티에서 코루틴은 쉽게 사용할 수 있는 서브루틴이라는 점에서 매우 다양하게 활용할 수 있다. 메인 루틴 하나만 사용할 때와는 확연히 다른 창작이 시작된다. 물론 무한루프 코루틴이 잡아먹는 비용이라던가, 문제점도 있지만 활용하기에 따라 프로그래머가 다양한 연출을 할수 있는 기능이다. public IEnumerator MethodName(float totalTime) { yield return new WaitForEndOfFrame(); float elapseTime = 0f; while(elapseTime = totalTime) elapseTime = totalTime; //시간동안 진행하고 싶은 작..
2014.07.02