我从伺服器收到一个json数组消息 ,数组里面每个数都是Unity中的一个GameObject(GameObject上面带有脚本Player.cs)Player这个脚本所需要的,这些伺服器数组里面的消息每个数都要传给Player.cs,就是每一次实例化一个GameObject带一个脚本Player.cs 就是每次实例一个Player.cs ,这样的话每个GameObject带一个Player.cs脚本。而Player.cs中存在Update();

---------------以上是C#的设计---------------------而现在问题来了lua中表可以实现c#的面向对象,但是只是每个表添加一个实例,而这个实例的Update方法又如何执行呢???

--------------求大神告知!!!!!!非常感谢


可以参考房燕良前辈写的LuaComponet,其原理是使用一个表结构来模拟MonoBehaviour的行为,这样就可以在Lua脚本中实现和C#脚本同等地位的功能,而且Lua中的表结构是一个非常强大的数据结构,简单如数组复杂如字典这样的数据结构都可以实现,因此这个问题实际上C#到Lua的语法转换问题,希望题主能花点时间了解下这个语言。···
定时器。

将LUA中所有需要执行Update方法的GameObject注册到C#中,

C#中有个定时器,定时执行需要更新的GameObject的Update方法。
许你山高水长的回答不失为一种方案 我也考虑和尝试了这种方法,不过我最终使用了群友提供的方法,在一个lua文件中创建一个表,可以实现类似c#的类 最后用C#注册这个lua文件里面的函数就可以实现update 但是想要用到unity的碰撞却是一难题 我的下一个项目就要用到碰撞 所以学习还再继续
有些第三方的Lua OOP库,比如middleclassLua的面向对象归根结底还是table,只不过「对象table」的元表是「类table」,对于继承来说也是同理,「子类table」的元表是「父类table」

具体是否用LuaComponent的机制,倒不是很重要,LuaComponent的好处在于和MonoBehaviour的机制类似,但是比较浪费,毕竟不是所有组件都需要Update,TriggerEnter之类的介面的


table.insert


推荐阅读:
相关文章