从C#调用IronPython函数,反之亦然

时间:2014-05-26 21:30:06

标签: python .net callback

我正在设计Unity3D游戏,用户可以通过修改.py文件来调整游戏性。

我正在使用包含IronPython的Python Interpreter资产。

我需要在C#和正在运行的Python实例之间传递控制权。这是一个伪代码示例:

// From Unity, C# script... 
bool MakeNoise( float vol ) {
    //...
}
void Awake() {
    m_pythonEngine = Python.CreateEngine();
    m_scriptScope = m_pythonEngine.CreateScope();
}
bool NewRound( int n ) {
    myPythonRuntime.InvokeFunction( "NewRoundPy", param: roundNumber = n );
    return retVal;
}

然后,在游戏运行时,用户可以输入文本框:

# Python
vol = 0.5

def NewRoundPy( roundNumber ):
    theCSharpObject.MakeNoise( vol )
    return True

每次新一轮开始时,它都会调用MakeNoise函数。

为笨拙的假设情况道歉。重要的是我需要能够将执行从一个环境转移到另一个环境,并在我这样做时传递数据。

我知道运行Python脚本所需的代码。但我想从脚本中调用各个函数。并且脚本必须在这些调用之间保持运行,以便在下一次调用某个函数时,在一个函数/调用中设置的变量保留它们的值。

这可能吗?如果是这样,怎么样?

PS go Python - > C#似乎相当简单; IronPython .NET Integration documentation

PPS一旦我对正在发生的事情有所了解,我会整理一下这个问题

0 个答案:

没有答案