C#作为一种脚本语言

C#作为一种脚本语言,c#,c++,native,unity3d,C#,C++,Native,Unity3d,可能重复: 我很好奇,是否可以使用C++作为一个C++语言中的脚本语言。我已经在自己的游戏引擎上工作了5年,但我从未接触过它的脚本方面。我喜欢在Unity中为游戏中的不同对象编写C#脚本 我做了一些搜索,但找不到任何真正有用的东西 请注意,我的问题与.Net无关,而是与作为通用语言的C#有关 只是要确定,我将声明:我不想调用C++中的本机C++。我想要另一种方式 如果有人能给我提供一些参考资料,我将不胜感激。看看CodeDOM。现在还有Reflection.Emit和Linq.Expressi

可能重复:

我很好奇,是否可以使用C++作为一个C++语言中的脚本语言。我已经在自己的游戏引擎上工作了5年,但我从未接触过它的脚本方面。我喜欢在Unity中为游戏中的不同对象编写C#脚本

我做了一些搜索,但找不到任何真正有用的东西

请注意,我的问题与.Net无关,而是与作为通用语言的C#有关

只是要确定,我将声明:我不想调用C++中的本机C++。我想要另一种方式


如果有人能给我提供一些参考资料,我将不胜感激。

看看CodeDOM。现在还有Reflection.Emit和Linq.Expressions——这里有类似的问题


是的,您要做的是在自己的应用程序中托管CLR。下面是一篇MSDN文章,其中介绍了它

那篇文章的作者还出版了一本书,涵盖了它的各个方面。一旦你在你的应用程序中启动并运行CLR,如果你想要真正的脚本,你将需要动态编译代码,cirrus提供了一些关于如何做到这一点的链接

您不可避免地还需要将主应用程序的一部分公开到CLR命名空间中。否则,您将无法访问主托管应用程序的任何特定功能


编辑:当我说“真正的脚本”时,我的意思是您在运行时使用扩展名为.cs的文本文件作为脚本。事先编译这些文件,然后在托管应用程序中包含.DLL会更有效,但是您可以通过两种方式来实现。

您可能需要查看Rickard Nilsson提供的源代码。这是一个C#交互式口译员。它不承载CLR,因为它是托管的,但创建了C#脚本环境。

听起来是可行的,只要有一个托管接口用于您想要调用的内容。我认为,可能比建议的副本更合适。虽然我不会说它是完全重复的,但它并不是真正设计成脚本语言的。您是否考虑过(如果可能)使用JavaScript?看看谷歌的V8引擎(我相信它已经是C++)了,你可以从JavaScript中钩住本地C++对象……当然,JavaScript是为Web设计的,但是它可以适应其他应用程序。这很简单。只需将代码编译到dll中,然后将编译后的文件作为参考加载。IronPython、IronRuby或V8(ECMAScript)比C#更好,如果您希望在动态中使用脚本。链接到CLR托管中心文档: