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을 제어할 수 있습니다.