找回密码
 立即注册
查看: 139|回复: 0

Unity中 Xlua 和 cocos2dx中的 lua 的区别?

[复制链接]
发表于 2022-11-19 11:49 | 显示全部楼层 |阅读模式
其实两周前就想写写lua的东西,一直没有直接时间,今天终于抽出一点时间,然后来了解下lua是个什么东西,先对它有个大致理解。
一、什么是lua?
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 应用场景有游戏开发、独立应用脚本、Web 应用脚本、扩展和数据库插件等
想学习lua 语法的同学可以看看这个链接:
Lua 教程 | 菜鸟教程
也可以去网上搜索,资料很多。我们的重点不在这里,往下看

二、那lua和其他计算机语言(C,C++、C# 、java等)有什么区别?
lua是解释型语言,C,C++等是编译型语言
编译型语言:编译型语言在执行之前要先经过编译过程,编译成为一个可执行的机器语言的文件,比如exe。因为翻译只做一遍,以后都不需要翻译,所以执行效率高。如C、C++、Objective-C等。
解释型语言:解释型语言编写的程序不进行预先编译,以文本方式存储程序代码。执行时才翻译执行。解释型语言很多,如java,C#,python,lua等。
熟悉java的同学都知道java有自己的虚拟机,java打包时会先编译成字节码,然后真正执行的时候虚拟机会解释执行。C#也有自己的虚拟机,所以C#也是解释型语言。
lua也一样有自己的虚拟机,你可以在打包的时候直接把lua文件打进包里,也可以将lua编译成字节码然后打进包里。编译成字节码后会节省掉运行时第一次加载时编译的时间,为什么是第一次呢?因为就算你不编译成字节码打包,真正运行的时候也不会每次都把lua编译成字节码,第一次编译完后会缓存的。

三、lua为什么大家都在用,它有什么好处呢?
lua做为解释型语言它的优势就在于,它小巧,方便,在大多数游戏项目中被用来做热更新使用。比如
1、因为它小巧,所以这个语言的学习成本是比较低的,对学过计算机的同学来说就是手到擒来的事。
2、如果我们的业务代码都是用lua开发的,那哪天线上出问题了,我们不需要重新打包apk和ipa文件,直接提交到CDN,然后玩家启动游戏后更新执行就可以修复问题
3、我们还可以更新整个新的功能代码,玩家不需求下载整包就可以玩到我们的新功能,既节约了玩家的流量也节省了我们打包和渠道审核的时间,如果你开发过游戏的话那你肯定体验过打包的痛苦。当然苹果是不允许我们这么干的,如果被发现,轻则整改,重则下架。

四、Unity中 Xlua 和 cocos2dx中的 lua 是一个东西吗?
答案是”是一个东西“。市面上出现了很多名词,如slua,ulua,xlua,tolua,其实他们都是对原生lua的封装

为什么要对原生代码进行封装呢?
熟悉lua的同学都知道,lua是用C语言写的,但在真正开发的时候我们需要暴露我们的接口、类库、以及引擎代码等暴露给lua层,然后我们在写lua代码的时候就可以调用到我们的引擎代码,实现我们想要的功能,那这个lua原生代码是没有现成的工具供我们使用的,需要我们自己添加,那xlua等就帮我们完成了这部分工作,不需要我们二次开发,拿来用就行。像cocos2dx中也是一样,看过cocos2d_lua——bindings代码的同学都知道,这个工程都是C++层导出给lua的绑定接口。

这里我们不深入将cocos的东西,只是拿来做个比较,让我们明白一个东西,其实所有的lua框架底层调用的都是lua原生代码,如果你之前用过cocos转到Unity,不用纳闷,他们就是一个东西。

如果你搞清了lua是什么东西,它有什么优点,以及它的语法后,那我们来学习下xlua这个中间层到底做了哪些东西,xlua是怎么和C#通信的?

请看下面的两篇文章
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 20:03 , Processed in 0.091549 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表