我正在阅读一本有关游戏开发的书,其中向您展示了如何在Lua中为您的游戏编写脚本。他们对Lua进行编程并从C ++中使用它,但是我想知道是否存在使用C#中的Lua的库或API:特别是从XNA来为PC 和 XBox 360 开发游戏?
我正在阅读一本有关游戏开发的书,其中向您展示了如何在Lua中为您的游戏编写脚本。他们对Lua进行编程并从C ++中使用它,但是我想知道是否存在使用C#中的Lua的库或API:特别是从XNA来为PC 和 XBox 360 开发游戏?
Answers:
这是我要指出的(http://www.xnua.com/xna_lua_xnua),但是很长一段时间没有更新。
C#是很棒的语言,在某种意义上可以用作c#游戏中的脚本语言。Nick Gravelyn创建了一些有关切片引擎的不错的教程(http://blog.nickgravelyn.com/downloads/#tileengine),并使用了自定义脚本引擎来触发对话框。当他了解“ yield”关键字时,他也有一个基本示例:http : //blog.nickgravelyn.com/2010/02/the-magic-of-yield/
如果您正在寻找使用C#编写脚本的方法,一定要看看IronPython。它不仅是C#的python API,它实际上是一个完全独立的python实现,可以编译为与C#相同的CLR程序集(具有相同的性能),但可以作为脚本语言进行接口。由于编组的开销,用于C#的任何Lua包装器都会非常慢。
正如肖恩所说,IronPython值得一看。IronPython实际上是针对.NET的几种针对动态语言运行时(DLR)的动态语言实现之一。至少有一个旨在在DLR上实现Lua的开源项目(像这样),但是我不确定是否有任何实现接近完成。Lua的一组实现良好的DLR绑定应提供与IronPython和IronRuby相当的性能,并且比Lua包装器要快得多。为了进行比较,IronPython通常比CPython表现更好(有时明显更好)。
注:以下为ElementCy指出,DLR语言一般不支持在Xbox 360上但是,是在DLR的“解释模式”。我不太清楚可以肯定地说,但是可能会使IronPython(或其他DLR语言实现)在解释模式下在Xbox 360上运行,尽管性能肯定会受到影响。可能值得向DLR团队中的某人询问他们是否知道这是可能的。如果没有,则Xbox 360 应该获得即将出现的Silverlight支持的Reflection.Emit支持。如果发生这种情况,我想在Xbox 360上启动DLR并运行就不会有问题。
Lua解释器不受管理,是AFAIK,因此您无法使其在XNA的Xbox上运行
您可以使用名为Jint的Javascript解释器,该解释器不依赖DLR,并且可以在Xbox上运行(http://jint.codeplex.com/)
从技术上讲,它不能回答您的问题(在xbox上不起作用),但是LuaInterface可以相对轻松地使Lua与C#集成。