我正在写一个粒子系统. (对于游戏和粒子编辑器)
在该系统中,存在0到n个修饰符.
它们每帧都会修改粒子系统中的粒子.
在该系统中,存在0到n个修饰符.
它们每帧都会修改粒子系统中的粒子.
例如,你可以有一个名为“GravityModifier”的预定义修饰符,它只对每帧的每个粒子执行以下操作:“particle.Velocity.Y = 9.81”或类似的东西.
现在我希望用户能够在运行时(在编辑器中)编写其他修饰符.
我希望能够只使用C#.
由于粒子系统是写入JSON文件的,因此自定义修饰符脚本应该作为源代码(可能是base64编码)写入文件.
–
我的问题是:
假设游戏想要加载这样的粒子系统文件.如何将自定义修饰符编译为可执行代码?
回答这个问题时要考虑的另一个非常重要的事情:请注意,这将是游戏的粒子系统.编译的代码每帧调用超过3000次. (大多数是60fps)
因此,编译代码执行的时间比其他游戏函数要长得多,这一点非常重要.
将修饰符脚本编译到表单的委托中会很好:
委托void ModifyParticle(ref Particle p);
这可能吗?如果是这样,怎么样?
解决方法
是,
使用CSScript library可以实现这一点非常简单.