Back to Top

Hero开发笔记-客户端代码更新

客户端自更新是国内游戏的一大特色,不评论好坏,只提供方案支持。

客户端自更新包括两个方面,资源更新和代码更新,资源更新使用AssetBundle以后再说,本文讨论的是代码更新,需要引入lua的支持。前文说了,我们为了开发效率,会充分发挥编辑器的组件优势,这貌似有点矛盾,总体思路上是,表现逻辑相关的需求,用组件的形式使用C#开发,游戏逻辑相关的内容使用lua扩展。

unity lua比较

目前常见的三种unity lua库,ulua,nlua,unilua:

  • ulua是luainterface增加了对unity的支持
  • nlua是luainterface的作者为了跨平台,而写的升级版
  • unilua是lua5.2的C#版

从桥接C#上来说,nlua最好,它对ios平台做了特殊处理,如支持了委托的桥接。 从兼容unity上来说,ulua最好,它重写了loadfile、print等api。

unilua 略显鸡肋,不评价了。

综合而言,我选择使用ulua,并为其引入nlua对ios平台的特殊处理,如支持了如下代码:

UIEventListener.Get(label3).onClick = OnClick;

选择原因如下:

  1. 国内大部分的公司采用了ulua,其应当没有明显bug
  2. 我更倾向于使用nlua,但工作紧,无法投入时间去做nlua的unity支持

因联系不上ulua作者,索性将代码放在了unitylua,欢迎大家提意见。

插件文档

遇到的问题:

  1. ios模拟器加载Plugin有问题,有帖子说是不可用的。

unitylua升级

2015.2

升级其使用使用 nlua+Keralua+lua5.2,做了以下修改

  1. 增加对unity支持。
  2. 删除对Kopilua的支持,减少bug,方便升级lua
  3. 删除动态创建程序集的代码,保持多平台的一致性(android可创建,ios不可创建,全改为不可创建,方便测试。)