如何将post-compiled scripts做成一个即用型的方法?

How to make post-compiled scripts into a ready-to-use method?

我正在尝试制作一款玩家可以编写自己的脚本的游戏。

出于安全原因,我不想使用 CodeDOM 之类的东西,并且我尽量避免使用第 3 方组件。

所以我设法编写了自己的解析器来解析脚本。

它不漂亮,但它完成了工作。

但问题来了:由于用户自制的脚本量很大,所以不可避免地会产生性能问题。

所以我想也许我应该将已经解析过一次的脚本变成某种方法或委托或其他东西。

我对 CreateDelegateExpression 的主题做了一些研究,但似乎不是我想的那样。

老实说,它非常复杂和高级,超出了我的理解能力。

我的意思是,我可能可以使用 this solution 将“每一行”变成方法,但是“整个脚本”怎么样?当然,这不是做事的好方法,对吧!?

而且我还考虑过将每一行都变成一个小的 class,然后将所有这些 class“链接”在一起,使脚本流畅运行。

但是,同样,因为脚本的数量不是那么少,它占用了我的大部分资源来处理那些classes。

所以,有人可以这么好心地帮助我吗?

非常感谢!

这里有雄心勃勃的东西。您正在尝试构建一种由 c# 解释的解释型编程语言。

您可以尝试 roslyn 启用 运行time c# 脚本 运行ning,或资产商店中的其他脚本语言。

我没有尝试过,但是 运行 脚本在 运行 时有资产。 This might be another alternative to run c# code at runtime, or you might be interested in this 提供由 c# 解释的简化 运行time 语言的其他替代方案,这对于非程序员用户来说可能是可取的。此外,简化的语言可能会提供更准确的 validation/interpretingCorrection 功能,以便能够在 运行 时间之前编写工作代码,这是一个有趣的功能。如果该功能不可用,使用简化的语言,自己构建代码验证系统的方法比使用原始 C# 更可行:)