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 })
 
  |