我正在尝试在我的游戏中嵌入脚本引擎。由于我是用C#编写的,我认为IronPython非常合适,但我能够找到的例子都集中在用C#调用IronPython方法而不是IronPython脚本中的C#方法。
为了使事情变得复杂,我在Windows 7 64位上使用Visual Studio 2010 RC1。
IronRuby的工作方式与我预期的一样,但我对Ruby或Python语法不是很熟悉。
我在做什么:
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
//Test class with a method that prints to the screen.
scope.SetVariable("test", this);
ScriptSource source =
engine.CreateScriptSourceFromString("test.SayHello()", Microsoft.Scripting.SourceCodeKind.Statements);
source.Execute(scope);
这会产生错误,“'TestClass'对象没有属性'SayHello'”
使用“self.test.SayHello()”
,这个确切的设置适用于IronRuby我使用IronRuby时很谨慎,因为它看起来并不像IronPython那样成熟。如果它足够接近,我可能会接受它。
有什么想法吗?我知道这一定很简单。
答案 0 :(得分:5)
我刚刚有了这个...你没有发布你的所有代码,但我猜SayHello是公共的,这是正确的,但是包含SayHello函数的类也需要公开,以便Python可以看到它。
答案 1 :(得分:1)
可能是因为您没有声明您的班级“test”是“公开的”,以使其对IronPython可见。