我有一个用 C# 编写的小游戏。它使用数据库作为后端。它是 一个trading card game ,我想将卡片的功能实现为一个脚本。
我的意思是我本质上有一个接口(interface),ICard
,一个卡片类实现了它(public class Card056: ICard
)并且它包含一个调用的函数通过游戏。
现在,为了使它可维护/可修改,我希望将每张卡片的类作为数据库中的源代码,并在首次使用时对其进行基本编译。因此,当我必须添加/更改卡片时,我只需将其添加到数据库并告诉我的应用程序进行刷新,而无需任何程序集部署(特别是因为我们将讨论每张卡片 1 个程序集,这意味着数百个程序集) .
这可能吗?从源文件中注册一个类,然后实例化它等等。
ICard Cards[current] = new MyGame.CardLibrary.Card056();
Cards[current].OnEnterPlay(ref currentGameState);
语言是 C#,但如果可以用任何 .NET 语言编写脚本,则额外奖励。
最佳答案
Oleg Shilo's C# Script solution (at The Code Project ) 确实很好地介绍了如何在您的应用程序中提供脚本功能。
另一种方法是考虑一种专门为脚本编写的语言,例如 IronRuby , IronPython , 或 Lua .
IronPython 和 IronRuby 现已上市。
有关嵌入 IronPython 的指南,请阅读 How to embed IronPython script support in your existing app in 10 easy steps .
Lua 是游戏中常用的脚本语言。有一个用于 .NET 的 Lua 编译器,可从 CodePlex 获得 -- http://www.codeplex.com/Nua
如果您想了解如何在 .NET 中构建编译器,那么该代码库是一本很好的读物。
完全不同的角度是尝试PowerShell .有许多将 PowerShell 嵌入应用程序的示例——这里有一个关于该主题的完整项目: Powershell Tunnel
关于c# - 向 .NET 应用程序添加脚本功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260/