Lua在游戏开发中的应用| Luin's Blog

前些日子一直忙于开发BigTank项目(下载地址参见劣质设计网站:,不支持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.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({zx1}版本的LuaInterface支持private)函数来供Lua脚本使用,其中无需关心参数的个数以及类型。

Lua:

执行DoFile后会调用Lua脚本,后者则调用C#中的PetDo函数完成指定动作。

郑重声明:资讯 【Lua在游戏开发中的应用| Luin's Blog】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——