欢迎来到天天文库
浏览记录
ID:34418922
大小:130.01 KB
页数:6页
时间:2019-03-06
《unity3d游戏开发之lua与游戏的不解之缘(下)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Unity3D游戏开发之Lua与游戏的不解之缘(下)今天我们将视角转换到我们熟悉的Unity平台上来,那么我们为什么要将Lua语言引入Unity平台呢?这是我们今天要思考的第一个问题。传统的单机游戏通常以游戏光盘的形式出售给游戏玩家,玩家在购买游戏后无法获得更多的游戏内容,玩家只能在一张容量有限的游戏光盘里不断地重复寻找着游戏的乐趣。毋庸置疑,这种模式不利于游戏开发方为游戏增加新的内容。可是在互联网技术逐步成熟的今天,玩家在购买一款实体游戏后,通常可以通过购买DLC来体验更加丰富的游戏内容,而游戏制作方则可以通过DLC向玩家传达游戏正传中没有表达出来的内容。我们知道DLC是通常是指
2、游戏的资料片,它是对游戏内容的一种补充。文章出处:狗刨学习网。从技术层面上来讲,如果我们采用编译型的语言来做一款游戏,那么我们根本无法实现对游戏内容的扩充,因为我们需要对整个项目进行重新编译然后打包成游戏光盘再出售给玩家。这样无疑会增加游戏制作方的制作成本,而更重要的是玩家不会为了新的游戏内容而再次购买游戏,显然这种方式是不合理的。那么,此时像Lua这样的脚本语言就可以发挥出巨大的作用,因为脚本语言通常不会占用太多资源,或许我们只需要一个游戏脚本就可以利用游戏中现有的场景和人物开辟出新的游戏剧情。所以,经过一番分析,大家可以总结出脚本语言在游戏开发中一个重要的作用就是更新。因为脚本
3、语言通常都是纯文本文件,我们只需要改变某些参数而不必重新编译整个项目,这正是我们希望看到的。 第一步是下载UniLua,将UniLua引用到项目中有两种方法,一种是将该项目中的UniLua编译成dll然后在Unity项目中使用,一种是将该项目中的UniLua直接复制到Unity项目中,我们这里使用第二种方法。将UniLua的命名空间添加到我们项目中,我们就可以开始动手写程序了。不过这里,博主想说的是Mono可能会导致的一个错误,.NET4.0以上的版本是支持默认参数的构造函数的。可是由于Mono默认使用的是.NET3.5,所以在编译项目的时候就会报错,我们可以通过Proje
4、ct->Assembly-CSharp->Build->General将.NET的目标框架设为4.0,这样就可以解决这个问题了。好了,下面我们开始写代码啦,首先创建一个InvokeScript.cs的脚本:1.using UnityEngine; 2.using System.Collections; 3.using UniLua; 4. 5.public class InvokeScript : MonoBehaviour { 6. 7. //Lua脚本文件,我们将在C#调用该脚本 8. public TextAsset LuaFile; 9.
5、 //Lua虚拟机 10. private ILuaState mLua; 11. 1. void Start() 2. { 3. //初始化Lua虚拟机 4. mLua=LuaAPI.NewState(); 5. //加载Lua标准库 6. mLua.L_OpenLibs(); 7. //引用一个静态地C#库 8. mLua.L_RequireF(CSharpLib.CLASSNAME,CSharpLib.InitLib,false); 9. 10
6、. //执行Lua脚本 11. mLua.L_DoString(LuaFile.text); 12. } 13. 14. void OnGUI() 15. { 16. if(GUILayout.Button("调用Lua脚本",GUILayout.Height(30))) 17. { 18. InvokeLua(); 19. } 20. if(GUILayout.Button("调用C#脚本",GUILayout.Height(30)))
7、 21. { 22. InvokeCSharp(); 23. } 24. } 25. 26. #region 调用C#脚本 27. void InvokeCSharp() 28. { 29. //获取方法并传入参数 30. mLua.GetGlobal("SumAndSub"); 31. mLua.PushInteger(12); 3
此文档下载收益归作者所有