我正在设计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一旦我对正在发生的事情有所了解,我会整理一下这个问题