C# 如何使编译后的脚本成为一个随时可用的方法?

C# 如何使编译后的脚本成为一个随时可用的方法?,c#,unity3d,parsing,compilation,delegates,C#,Unity3d,Parsing,Compilation,Delegates,我正在尝试制作一个游戏,玩家可以编写自己的脚本 出于安全考虑,我不想使用CodeDOM之类的东西,我尽量避免使用第三方组件 因此,我设法编写了自己的解析器来解析脚本 这并不漂亮,但它能完成任务 但现在问题来了:由于用户制作的脚本数量相当大,因此不可避免地会产生性能问题 所以我想也许我应该把已经解析过的once脚本转换成某种方法或委托之类的东西 我对CreateDelegate和Expression这两个主题做了一些研究,但它似乎不像我想象的那样 老实说,它非常复杂和先进,超出了我的理解能力 我的

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

出于安全考虑,我不想使用CodeDOM之类的东西,我尽量避免使用第三方组件

因此,我设法编写了自己的解析器来解析脚本

这并不漂亮,但它能完成任务

但现在问题来了:由于用户制作的脚本数量相当大,因此不可避免地会产生性能问题

所以我想也许我应该把已经解析过的once脚本转换成某种方法或委托之类的东西

我对
CreateDelegate
Expression
这两个主题做了一些研究,但它似乎不像我想象的那样

老实说,它非常复杂和先进,超出了我的理解能力

我的意思是,我可能会把“每一行”变成使用方法,但是“整个脚本”呢?当然这不是一种很好的做事方式,是吗

我还想过把每一行都做成一个小类,然后把所有这些类“链接”在一起,以使脚本更流畅

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

那么,谁能帮我一下吗


非常感谢

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

您可以尝试启用运行时c#脚本或资产存储中的其他脚本语言


我没有尝试任何方法,但有一些资产可以在运行时运行脚本。可能是在运行时运行c#代码的另一种替代方案,或者您可能对提供由c#解释的简化运行时语言的其他替代方案感兴趣,这对于非程序员用户可能是可取的。此外,简化的语言可能提供更准确的验证/解释更正功能,以便能够在运行前编写工作代码,这是一个有趣的功能。如果该功能不可用,使用简化的语言,您自己构建代码验证系统的方法将比使用原始c#::)更可行。

谢谢您的回答,但我“尝试”尽可能避免使用第三方组件!我会用这些作为我的最后手段,如果而且只有当我不能想出任何办法来做。谢谢。好的,我想你正在尝试一些有点大的东西来避免第三方组件,但我不确定,尽管如此,你可以继续,我祝你好运。另一方面,委托是可以存储在代码本身中的函数,以便在代码中适当的位置调用,例如委托特定的事件。然而,我不知道这种方法是否可以用于scape编译,并引入未编译的代码。我想我肯定是吃得太多了!我对
DynamicMethod
做了更多的研究,它是如此的复杂和混乱以至于我最好还是读一下火星文献吧!>“哈哈,是的。自己编写一种编程语言真的是很高级的东西。尝试一下这些资源,这就是它们的用途!!!酷的是,如果以后你仍然有动力自己编写一个解决方案,你可以依靠其他解决方案中的一些技巧,这样你就可以用更小的步骤来解决一个真正大的问题。”因为对于您当前的知识来说,开始的第一步可能会非常重要。这是代码和知识共享的绝妙之处;)好的,谢谢!我将尝试一下!^o^