我应该使用什么方法编写C#脚本
我在写一个粒子系统。(用于游戏和粒子编辑器) 在这个系统中有一个0到n的修饰符。 每帧修改粒子系统中的粒子 例如,您可以使用一个名为“GravityModifier”的预定义修改器,该修改器每帧仅对每个粒子执行以下操作:“particle.Velocity.Y+=9.81”或类似的操作 现在,我希望用户能够在运行时(在编辑器中)编写额外的修饰符。 我希望能用C来做这个。 由于粒子系统是写入JSON文件的,因此自定义修改器脚本应该作为源代码(可能是base64编码)写入该文件 -- 我的问题是: 假设游戏想要加载这样一个粒子系统文件。如何将自定义修饰符编译成可执行代码 当回答这个问题时,要考虑另一个非常重要的事情:注意这将是一个游戏的粒子系统。编译后的代码每帧调用次数将超过3000次。(大多为60帧/秒) 因此,编译后的代码不会比其他游戏函数花费更长的执行时间,这一点非常重要。 最好将修改器脚本编译成以下形式的委托: 代理无效修改粒子(参考粒子p) 这可能吗?如果是,怎么做?是 这是可能的,而且使用非常简单。有一个的CTP,您可以在其中执行运行时定义的C#代码,例如REPL等。下面是一篇MSDN文章,介绍了它我应该使用什么方法编写C#脚本,c#,scripting,delegates,C#,Scripting,Delegates,我在写一个粒子系统。(用于游戏和粒子编辑器) 在这个系统中有一个0到n的修饰符。 每帧修改粒子系统中的粒子 例如,您可以使用一个名为“GravityModifier”的预定义修改器,该修改器每帧仅对每个粒子执行以下操作:“particle.Velocity.Y+=9.81”或类似的操作 现在,我希望用户能够在运行时(在编辑器中)编写额外的修饰符。 我希望能用C来做这个。 由于粒子系统是写入JSON文件的,因此自定义修改器脚本应该作为源代码(可能是base64编码)写入该文件 -- 我的问题是:
Mono已经有了这一功能一段时间了,因此可以作为替代品使用。请看,这是即将在下一个.NET框架中推出的C#compiler-as-a-service功能预览版(但测试版还很早)。如何取而代之?See Lua是一种非常简单的脚本语言,非常适合编写游戏中的动作脚本。相当多的iPhone游戏在objective-c中使用Lua,也有很多游戏通过.Net使用Lua。使用Microsoft在.Net中的内置编译器
CSharpCodeProvider
:
如何使用C#编译器以编程方式编译代码:
NET Framework公开了允许您以编程方式
访问C语言编译器。如果您愿意,这可能很有用
编写自己的代码编译实用程序。本文提供了一个示例
使您能够从文本源编译代码的代码。这个
应用程序允许您只构建可执行文件或构建
启动可执行文件并运行它。测试过程中发生的任何错误
编译过程显示在表单上
开始游戏时,只需编译并加载二进制文件
有关如何编译dll并直接加载/执行dll的更多示例,请访问
它的社区也增加了内容。您也可以通过在上搜索此主题获得一些好主意。但是,我认为这对这个网站来说仍然是一个好问题。我认为有些商业游戏(第二人生)使用Mono作为脚本引擎:哇,谢谢。这正是我需要的!特别是LoadMethod(…)&GetStaticMethod()的示例,它可以按预期工作,并提供与执行“本机”静态方法相同的速度!这太完美了。