Lua在游戏开发中应用是本文要介绍的内容,主要是来了解并学习lua中游戏的开发,具体内容的实现,来看本文详解。
前些日子一直忙于开发BigTank项目(下载地址参见劣质设计网站:http://www.buaa-mstc.com,不支持IE),总结了一些Lua在C#项目中的应用方法。
Lua 是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它的主页是 www.lua.org。
Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。
在C#中使用Lua也十分简单。
- LuaInterface is a library for integration between the Lua language and Microsoft
- .NET platform’s Common Language Runtime (CLR). Lua scripts can use it to instantiate CLR objects,
- access properties, call methods, and even handle events with Lua functions.
从LuaInterface网站上可以下载到这个库。在你的项目中引用LuaInterface.dll后就可以开始了。
BigTank项目还没有确定是否要开源,所以我拿自己写的电子宠物程序演示一下(它也用了Lua,你可以在实验室页面找到它的全部源代码)。
- C#:
- //...
- /// <summary>
- /// Lua虚拟机
- /// </summary>
- private static Lua luaVM = null;
- /// <summary>
- /// 宠物的构造函数
- /// </summary>
- public Pet(PetForm _petForm, string _petName, string _petPath)
- {
- petState = new PetState();
- petForm = _petForm;
- petName = _petName;
- //构造Lua虚拟机以解析宠物AI
- luaVM = new Lua();
- //注册提供给宠物AI的API函数
- Type tThis = this.GetType();
- luaVM.RegisterFunction("PetDo", this, tThis.GetMethod("LuaPetDo"));
- luaVM.RegisterFunction("PetDoFrame", this, tThis.GetMethod("LuaPetDoFrame"));
- luaVM.RegisterFunction("Sleep", this, tThis.GetMethod("LuaSleep"));
- //载入AI文件
- luaVM.DoFile(System.AppDomain.CurrentDomain.BaseDirectory + _petPath + "\\ai.lua");
- }
其中RegisterFunction作用是注册C#代码中的一个public(***版本的LuaInterface支持private)函数来供Lua脚本使用,其中无需关心参数的个数以及类型。
- Lua:
- PetDo("Sleep");
执行DoFile后会调用Lua脚本,后者则调用C#中的PetDo函数完成指定动作。
小结:Lua在游戏开发中应用教程的内容介绍完了,希望通过本文的学习能对你有所帮助!