美文网首页
热更新03_ULua Day0826

热更新03_ULua Day0826

作者: 段然丶 | 来源:发表于2017-08-26 20:13 被阅读0次

    Ulua的使用流程一般为:

    1.实例化LuaState对象(new LuaState())

    LuaState l = new LuaState( )

    string str = "print('hello world 世界')";//代码

    2.加载Lua代码

    LuaState. DoString(str)

          a.可以直接赋一段Lua代码字符串,

        b.为了热更新.可以指定一个Lua脚本文件,Unity不支持扩展名为lua的文件,所以可将Lua脚本扩展名定为txt(纯文本文件),并用unity的TextAsset列表负责记录所有脚本文件。建议列表中给每个脚本搭配一个string类型的ID,这样凭此ID即可加载正确的lua脚本;另外在LuaState类中新增一个String类型的public成员,赋值为该ID。这样一旦某个Lua脚本在运行时报错,可根据输出的ID值判断是哪个Lua脚本有错误(关于TextAsset:TextAsset TXTFile = (TextAsset)Resources.Load()     ; TextWriter tw = new StreamWriter() )

        c.Lua里的预处理:

    luanet.load_assembly("Assembly-CSharp")

    luanet.load_assembly('UnityEngine')

    Vector2 = luanet.import_type('UnityEngine.Vector2')

    Vector3 = luanet.import_type('UnityEngine.Vector3')

    GameObject = luanet.import_type('UnityEngine.GameObject')

    luanet.import_type('System.Collections.Generic.List')

    Debug = luanet.import_type('UnityEngine.Debug')

    单独写个Lua脚本记录上面的Lua常用预处理脚本,先加载一下这个脚本。Lua调用C#后,可以Import自定义C#类,当然在C#中实例化的LuaState也可以预定义一些Lua全局变量,这都是在C#里完成的,比如:

    3.调用Lua代码中的方法(GetFunction(string),LuaFunction.callFunction(string))。

    其中,建议列表中给每个脚本搭配一个string类型的ID,这样凭此ID即可加载正确的lua脚本;另外在LuaState类中新增一个String类型的public成员,赋值为该ID。这样一旦某个Lua脚本在运行时报错,可根据输出的ID值判断是哪个Lua脚本有错误。

    相关文章

      网友评论

          本文标题:热更新03_ULua Day0826

          本文链接:https://www.haomeiwen.com/subject/kgjvdxtx.html