首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用什么方法来编写C#脚本

我应该使用什么方法来编写C#脚本
EN

Stack Overflow用户
提问于 2011-11-19 05:52:27
回答 5查看 457关注 0票数 6

我在写一个粒子系统。(对于游戏和粒子编辑器)在此系统中有0到n个修改器。每一帧都会修改粒子系统中的粒子。

例如,可以有一个名为"GravityModifier“的预定义修改器,该修改器在每一帧中仅对每个粒子执行以下操作:”pple.Velocity.Y += 9.81“或类似内容。

现在,我希望用户能够在运行时(在编辑器中)编写额外的修饰符。我希望能够只使用C#来做这件事。由于粒子系统被写入JSON文件,因此自定义修改器脚本应该作为源码(可能是base64编码的)写入到文件中。

--

我的问题是:假设游戏想要加载这样一个粒子系统文件。如何将自定义修饰符编译成可执行代码?

回答这个问题时要考虑的另一个非常重要的事情是:请注意,这将是游戏的粒子系统。编译后的代码每帧将被调用超过3000次。(主要是60fps),所以编译后的代码不会比其他游戏函数花更长的时间来执行是非常重要的。最好将修饰符脚本编译成以下形式的委托: delegate void ModifyParticle(ref Particle p);

这个是可能的吗?如果是这样的话,是怎么做的?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-19 05:55:26

是,

使用CSScript library可以做到这一点,而且非常简单。

票数 5
EN

Stack Overflow用户

发布于 2011-11-19 06:00:05

有一个'Roslyn' C# compiler as a service API的CTP,在这里你可以执行在运行时定义的C#代码,比如REPL等。

http://visualstudiomagazine.com/articles/2011/11/16/the-roslyn-scripting-api.aspx

Mono在他们的Mono.CSharp library中已经有了一段时间的这种功能,所以可以作为替代。

票数 6
EN

Stack Overflow用户

发布于 2011-11-19 06:00:25

请查看Roslyn,它是下一个.NET框架中C#编译器即服务功能的即将推出的(但仍处于早期测试版)预览。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8189627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档