热更新03_ULua Day0826

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脚本有错误。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,958评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,535评论 0 17
  • 什么是LuaInterface LuaInterface包括两个核心库一个是LuaInterface.dll,一个...
    周joe阅读 3,945评论 1 6
  • 参考1.获取指定URL参数 (^|&)^匹配字符串开头,&就是&字符(^|&)匹配字符串开头或者&字符,如果其后还...
    卡农me阅读 221评论 0 0
  • 原文摘录(P112): “勤奋、运气或灵活的手腕 固然重要,却非关键, 唯有掌握重点才是成功的不二法门。 辨别事情...
    Anita_Tang阅读 198评论 0 0