玩蛇网提供最新Python编程技术信息以及Python资源下载!

请教Unity3D中的IronPython问题

我想用IronPython作为Unity的外部语言脚本。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!")

原问题:IronPython in Unity3D

来自@Storm Kiernan 的回答:
从Unity的脚本:

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

python脚本里的(我的pple.py和game.exe放在一个文件夹里的):

import UnityEngine
from UnityEngine import *

Debug.Log("Hello From IronPython!")
Edit #1

我要指出我出错的原因是运行时版本指定为4.0,而不是3.5或者更低。

Edit #2

如果你需要从IronPython 访问脚本,你也可以通过加载程序集:

engine.LoadAssembly(Assembly.GetAssembly(typeof(MyPlayerScriptOrSomething)));

然后用到脚本里:

import MyPlayerScriptOrSomething

注意你不需要为每个脚本都加载程序集,只需一次获得程序集。

Edit #3

IronPython DLL应该放在Assets下的 Plugins文件夹,这是我的设置。

> Assets
> > Plugins
> > > IronMath.dll
> > > IronPython.dll
> > > Microsoft.Scripting.dll
> > > Microsoft.Scripting.Core.dll
Edit #4

脚本可以放在任何程序访问的到的地方。例如,你想直接把apple.py"放在C:\,你可以通过以下方法来执行:

engine.ExecuteFile(@"c:\apple.py");
Edit #5

我现在用的版本是:

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19896.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月24日 - 20时12分42秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules