当前位置:   article > 正文

Unity 项目中怎样正确的使用 Lua?_unity lua

unity lua

(图源siki学院-狸墨老师)

什么是Lua

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。可以方便的与c/c++进行相互调用。但是Unity中主要是用c#进行开发的,因此在Unity中使用Lua通常有以下两种方案:

  • 使用c#实现一个lua虚拟机
  • 基于原生的c lua api做一个封装,让c#调用

为什么要使用Lua

1.轻量级:Lua用标准C语言编写并以源代码形式开发,编译后仅仅一百余千字节,可以很方便的嵌入到其他程序中。

2.可扩展:Lua提供非常丰富易于使用的扩展接口和机制,由宿主语言(通常是C或C++)提供功能,Lua可以使用它们,就像内置的功能一样。

3.方便做功能的热更新。 4.Lua语言的深度和广度都不大,易学易用,可以降低项目成本

Unity 中使用 Lua 的优劣

优:

热更新分为2部分:代码热更新资源热更新。热更新的好处更多在于手游,比如每逢节假日游戏做活动、游戏程序员们需要修改活动代码,如果没有热更新,就需要用户在每一次版本大变动时重新安装游戏,这样会造成大量的用户流失。

劣:

  • 执行效率低:Unity中使用Lua,一个问题是Lua作为脚本语言本身执行的效率较低,另外还由宿主语言C#来调用,这个过程进一步降低了效率。所以游戏开发前要有规划,一般来说执行频繁、改动少、性能影响大的逻辑(如地图中人物移动、摇杆操作)适合放在C#中,反之则适合放在Lua中
  • 开发效率不如c#:C# 作为强类型语言和 Unity 官方的脚本语言,有 VS 这样方便的开发工具,错误检查和代码补全功能也非常完善。Lua 作为动态脚本语言,缺少类型声明,无论是阅读别人代码还是出错调试都不容易。断点调试也比较困难。

Unity 项目中怎样正确的使用 Lua

1、lua初学者或不熟悉的同学可以看下这三个免费教程:

AssetBundle(创建打包)入门学习(基于Unity2017

(AssetBundle(创建打包)入门学习(基于Unity2017))

Lua编程

(Lua编程)

C#与Lua语言基础—零基础入门

(《C#与Lua语言基础—零基础入门》部分目录)

2、unity中使用Lua

(图源siki学院-狸墨老师)

  • 尽可能不要过度使用c#回调lua(同样也不要过度使用C#来调用Lua)
  • 优先使用static函数导出,减少使用成员方法导出
  • lua和c#之间传参、返回时,尽可能不要传递以下类型:
    • 严重类: Vector3/Quaternion等unity值类型,数组
    • 次严重类:bool string 各种object
    • 建议传递:int float double
  • 尽可能不要将复杂的算法放Lua层,Lua与资源分离
  • 优先使用static函数导出,减少使用成员方法导出
  • 考虑在lua中只使用自己管理的id,而不直接引用c#的object
  • 合理利用out关键字返回复杂的返回值
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/95804
推荐阅读
相关标签
  

闽ICP备14008679号