Home
Development Environment

Coroutine

Coroutine 은 작업을 비동기로 수행할 수 있습니다. Unity와 Lua는 각각 Coroutine을 제공하고 있습지만 Unity Life Cycle을 위해 Unity의 Coroutine을 사용해야 합니다.
xlua.util을 사용해 lua 에서도 Unity의 Coroutine을 생성할 수 있습니다.
VivenBehaviour 에서 Coroutine을 사용하려면 require 문을 사용해 xlua.util 라이브러리를 추가합니다.
local util = require 'xlua.util'
Lua
복사
util.cs_generator를 사용해 lambda Function을 Coroutine으로 변환합니다.
self:StartCoroutine(util.cs_generator(function() Debug.Log("Coroutine Start") end))
Lua
복사
lambda fucntion 대신 일반 함수를 사용할 수 있습니다.
function soundPlay() routine = self:StartCoroutine(util.cs_generator(OnSoundPlay)) end function OnSoundPlay() while (isRolling == true) do --diceSound:Play() eventInstance:PlayOneShot() coroutine.yield(WaitForSeconds(0.2)) end end
Lua
복사
self:StartCoroutine 은 Unity Coroutine을 반환합니다. C#과 동일하게 Coroutine을 제어할 수 있습니다.