2

我只是想知道这是否可能;如何在 C# 中进行简单的脚本编写。基本上,假设我有这样的结构:

Structure
   int a
   int b
   int c

   Function ParseValue(pString as String)

         try
              return interpret(pString)
         catch
             return 0
         end try

   End Function

ParseValue 将是我的问题所在,特别是“解释”。“解释”只是我正在寻找的代码/实现的通用占位符。

假设我将 pString 的值传递为“a + b + c”。因此,代码会将字符串解释为“返回添加 a + b + c 的值”在一起。如果我不能这样做,请“返回 0”。必须返回 0 的一个很好的例子是“(a + b) / c”,并且 c = 0 的值(不能被零除)。

是否有可能做到这一点?我知道很久以前我能够使用 Microsoft Scripting Control 在 VB6 中实现类似的功能,但是是的。那是 12 年前的事了,与 C#/XNA/360 不兼容。我认为:P

编辑:可以解释的语言无关紧要。如果我可以使用 VB.Net 或 C# 并在其中解释 VBSCript 或 JScript,我对此很满意。

4

2 回答 2

1

这是 Mono 的 CSharp 编译器实现某些脚本功能的第一个有趣的用法,

http://gent.softcatala.org/jmas/bloc/pivot/entry.php?id=449&w=jordis_english_bloc

你可以看看这个技巧是否可以在 XNA 上使用。

于 2010-06-27T09:30:58.987 回答
0

我不知道可用于 .Net Compact Framework 的特定脚本库(即:适用于 360 的脚本库)。你可能能找到一个,我只是没看过。我见过用 C# 编写的 Lua 解释器,但我不确定它是否适用于 Compact Framework。(而且我不记得我最初是在哪里找到它的。)

但是,您可以在 360 上动态加载预编译的程序集(在 Windows 上您也可以动态编译它们,但 360 只能加载它们),这将允许您使用任何 .Net 语言作为您的“脚本”语言. 那么,问题是,您通过使用脚本语言究竟能获得什么?您可以在不重新启动游戏的情况下更改脚本,但是您仍然必须经过编译过程,并且调试变得更加困难。

考虑到 C# 的快速编译速度,我认为您最好不要为您的游戏使用脚本语言。

于 2010-07-08T05:22:02.377 回答