L03_替换协程

写一个C#的协程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Hotfix]
public class HotFix_Lesson_03 : MonoBehaviour
{
    private void Start()
    {
        LuaManager.Instance.Require("Main");
        StartCoroutine(CsCoroutine());
    }
    IEnumerator CsCoroutine()
    {
        while (true)
        {
            yield return new WaitForSeconds(1f);
            Debug.Log("Csharp的协程");
        }
    }
}

替换步骤

  1. 为类加上特性

  2. 先生成代码

  3. 再生成补丁

回忆xlua创建协程的步骤

  • 需要util生成协程函数
  • 需要coroutine来延时
1
2
3
4
5
6
7
8
9
10
11
12
util = require("xlua.util")
xlua.hotfix(CS.HotFix_Lesson_03, {
    -- 返回一个协程
    CsCoroutine = function(self)
        return util.cs_generator(function()
            while true do
                coroutine.yield(CS.UnityEngine.WaitForSeconds(1))
                print("lua的协程")
            end
        end)
    end
})

注意

这里替换的函数并不是直接写一个协程函数

而是用以1个匿名函数返回一个xlua生成的协程函数