请教Unity3D中的IronPython问题,unity3dironpython,我想用IronPytho
请教Unity3D中的IronPython问题,unity3dironpython,我想用IronPytho
我想用IronPython作为Unity的外部语言脚本。IronPython执行加载所需的DLL放在Assets\Plugins。然而,当我运行脚本的时候出现了如下错误:
PythonImportErrorException: No module named UnityEngineIronPython.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 clrclr.LoadAssemblyFromFile("UnityEngine.dll")import UnityEnginefrom 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 UnityEnginefrom 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
我现在用的版本是:
编橙之家文章,
相关内容
- 抓取需要选择日期才有结果的ajax网站需要怎么解决,选
- 自动检测当前运行环境版本的python方法是什么,运行环
- Windows下Python解决乱码问题应该怎么做,python乱码,刚接
- 用python完成依据列表中的元素画条形码怎么写源码,
- jinja2对内容进行替换时排除大括号内容如何操作,jin
- Python字典查找value中包含指定字符串key如何实现,pyth
- python爬虫运行一段时间后,返回403 forbidden原因是什么,
- Python实时数据更新解决方法,python实时数据,比如,实现
- pip安装之后无法正常使用环境变量已配置,pip环境变量
- import test.py不能执行又不报错是什么原因,importtest.py
评论关闭