UH2S2L23——协程函数替换
协程函数替换
前置知识:Lua调用协程
假设我们要对下面协程方法做热补丁
1 2 3 4 5 6 7 8 9 10 11
| public class HotfixMain : MonoBehaviour { IEnumerator TestCoroutine() { while (true) { yield return new WaitForSeconds(1); Debug.Log("C#协程打印一次"); } } }
|
协程函数的替换比较特别,需要在热补丁替换的基础上,执行Lua调用协程的前置步骤,归纳固定写法为
1 2 3 4 5 6 7 8 9 10 11 12
| util = require("xlua.util")
xlua.hotfix(CS.类名, { 协程名 = function(self) return util.cs_generator(function() end) end })
|
按照上面的固定写法,lua中替换协程逻辑为
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| util = require("xlua.util")
xlua.hotfix(CS.HotfixMain, { TestCoroutine = function(self) return util.cs_generator(function() while true do coroutine.yield(CS.UnityEngine.WaitForSeconds(1)) print("Lua打补丁后的协程函数") end end) end })
|