프로그래밍/Coroutine(8)
-
StopCoroutine() 의 활용 2 - Coroutine continue failure
앞서 정리한 스탑코루틴의 활용 1의 내용으로 개념을 잡고 넘어가자. 코루틴 호출은 script.StartCoroutine() 으로 호출하게 되어있고, 앞부분을 생략하고 StartCoroutine()으로 호출하면 자동적으로 콜링한 스크립트에서 제어하는 코루틴으로 호출되도록 되어있다. 즉 StartCoroutine( ~~~ ) 를 포함하여 코루틴을 호출하면 이 코루틴은 자신을 콜링한 스크립트가 달려있는 게임오브젝트에 할당되는 것이다. 이것이 적용되어 해당 게임오브젝트를 disable시키면, 그 게임오브젝트에 할당되어 돌아가던 모든 코루틴은 정지된다. (StopAllCoroutine의 효과) 위의 그림을 참고하자. 위 그림은 이런 상황을 거친 결과다 Scr Main=== start() { StartCorout..
2015.10.14 -
StopCoroutine() 의 활용
코루틴을 멈추는 데에는 몇가지 방법이 있다. AllStopCoroutine(); 을 이용하여 전체 코루틴을 종료하는 것이 한가지 방법인데, 이때에는 해당 스크립트가 붙어있는 게임 오브젝트에 달려있는 모든 코루틴을 종료하는 것이므로 주의해야한다. 게임오브젝트를 비활성화 하는 것도 AllStopCoroutine을 호출하는 것과 같은 효과를 낸다. 전체를 끄거나 오브젝트에 코루틴이 하나만 달려있거나, 오브젝트별 코루틴을 잘 관리하고 있다면 위와 같은 방법이 효과적이지만 정확히 어떤 코루틴을 집어서 종료하고 싶을때에는 주로 StopCoroutine("코루틴 이름"); 을 이용했다. 해당 스크립트의 해당이름 코루틴을 찾아 종료시키는 것이다. 하지만 이것을 이용하여 코루틴을 멈출때도 제약이 꽤 있다. 같은 이름의 ..
2015.06.16 -
KhjCoroutines - AniSprite
이번엔 코루틴으로 스프라이트 애니메이션을 구현해 보려고 합니다. 스프라이트 이미지의 이름이 "name_번호"(프레임 인덱스는 0부터 시작) 이라는 전제로 만들어 보겠습니다. //내용 1. 시작프레임에서 종료프레임까지 스프라이트 이미지를 일정간격으로 변경하여 애니메이션 합니다. 2. 프레임 종료후, 적용시킬 애니메이션 동작이 구현되어 있다면 설정합니다. 2. 종료후에 처음 이미지로 지정한 시간후에 초기화 시킵니다. public IEnumerator AniSprite(UISprite img, string name, float frameSpeed, int startFrame, int endFrame, bool init = true, float initTimer = 3f, string endAnimation =..
2014.08.25 -
KhjCoroutines - DownMove
이번 글에서는 이미지의 이동과 관련한 코루틴을 작성해보려합니다. 현재위치보다 지정높이만큼 위에서 시작하여 현재위치로 떨어지는 듯한 이펙트로 활용가능한 코루틴입니다. 주로 이펙트로 사용할 로직이다보니 이동을 하고나서, 원래 위치로 돌아와야 다음에 사용할 때 제위치에서 동작할 수 있을 겁니다. 그래서 코루틴 로직 종료시점에 이미지를 원래 위치로 복귀시키는 로직을 작성해봅시다. //내용 //지정 높이만큼 다운(-면 업) 이동 후 제자리로 // img 를 downHeight 값만큼 totalTime시간동안 아래로 이동시킨 다음 // init이 트루면 모든동작이 끝나고 initTimer 시간이후 원래자리로 돌아간다 public IEnumerator DownMove(UISprite img, float downHei..
2014.07.31 -
KhjCoroutines - AlphaOnOffLoop
이번엔 지난 AlphaChange 를 일회성이 아닌 반복해서 보여지도록 Loop로직을 작성해보려합니다. //내용 //알파값 토글 반복 //onTime기간동안 0->1 (or) offTime기간동안 1->0 변환하는 토글, crescendo면 0->1 반대는 1->0부터 토글을 시작한다 //무한루프일 경우 roop변수를 트루, 아닐경우 펄스하고 반복횟수를 cnt로 조정해준다 public IEnumerator AlphaOnOffLoop(UISprite img, float onTime, float offTime, bool crescendo = true, bool roop = false, int cnt = 1) { yield return new WaitForEndOfFrame(); float elapseTime..
2014.07.31