gpt4 book ai didi

mono - Unity3D 中的 IronPython

转载 作者:行者123 更新时间:2023-12-03 11:28:43 27 4
gpt4 key购买 nike

我正在尝试使用 IronPython 作为 Unity3D 的外部脚本语言。 IronPython 执行所需的 DLL 加载在 Assets\Plugins 中就好了。但是,当我尝试运行脚本时,出现此错误:

PythonImportErrorException: No module named UnityEngine
IronPython.Modules.Builtin.__import__ (IronPython.Runtime.Calls.ICallerContext,string,object,object,object) <IL 0x0003b, 0x001cc>
(wrapper dynamic-method) object.__import__##5 (IronPython.Runtime.Calls.ICallerContext,object,object,object,object) <IL 0x0000e, 0x0004d>
IronPython.Runtime.Calls.FastCallableWithContextAny.Call (IronPython.Runtime.Calls.ICallerContext,object,object,object,object) <IL 0x00015, 0x00067>
IronPython.Runtime.Calls.BuiltinFunction.Call (IronPython.Runtime.Calls.ICallerContext,object,object,object,object) <IL 0x0000d, 0x00058>
IronPython.Runtime.Operations.Ops.CallWithContext (IronPython.Runtime.Calls.ICallerContext,object,object,object,object,object) <IL 0x00012, 0x000b0>
IronPython.Runtime.Importer.Import (IronPython.Runtime.PythonModule,string,IronPython.Runtime.List) <IL 0x0000d, 0x0006c>
IronPython.Runtime.Operations.Ops.Import (IronPython.Runtime.PythonModule,string) <IL 0x00007, 0x0003b>
(wrapper dynamic-method) object.<string>##1 (IronPython.Runtime.ModuleScope) <IL 0x0006b, 0x00210>

脚本和“UnityEngine.dll”位于同一文件夹中。这是脚本:
import clr
clr.LoadAssemblyFromFile("UnityEngine.dll")

import UnityEngine
from UnityEngine import *

Debug.Log("Hello World from Python!")

最佳答案

所以从 Unity 脚本:

PythonEngine engine = new PythonEngine();
engine.LoadAssembly(Assembly.GetAssembly(typeof(GameObject)));
engine.ExecuteFile("apple.py");

在python脚本中(我的是apple.py与game.exe位于同一文件夹中):
import UnityEngine
from UnityEngine import *

Debug.Log("Hello From IronPython!")

编辑 #1

我应该注意,我之前收到错误的原因是因为运行时版本被指定为 4.0 而不是 3.5 或更低版本。

编辑 #2

如果您需要从 IronPython 访问您的脚本,那么您也可以通过执行以下操作来加载您的程序集:
engine.LoadAssembly(Assembly.GetAssembly(typeof(MyPlayerScriptOrSomething)));

然后在脚本中使用它:
import MyPlayerScriptOrSomething

请注意,您不必为每个脚本都执行 LoadAssembly,只需一次即可获取程序集。

编辑 #3

IronPython DLL 应该放在“Assets”下的“Plugins”文件夹中(最简单的是:Assets->Plugins。这是我的设置:
> Assets
> > Plugins
> > > IronMath.dll
> > > IronPython.dll
> > > Microsoft.Scripting.dll
> > > Microsoft.Scripting.Core.dll

编辑 #4

您的脚本可以放在您的程序可以访问它们的任何地方。例如,如果您想将“apple.py”直接放在“C:\”下,您可以通过执行以下操作来执行该文件:
engine.ExecuteFile(@"c:\apple.py");

编辑 #5

我使用的版本是:

enter image description here

关于mono - Unity3D 中的 IronPython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com