IronPython in Unity3D

一曲冷凌霜 提交于 2019-12-02 19:02:43

So from a Unity script:

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

And inside of a python script (mine was apple.py located in the same folder as the game.exe):

import UnityEngine
from UnityEngine import *

Debug.Log("Hello From IronPython!")

Edit #1

I should note that the reason I was getting an error before was because the runtime version was specified as a 4.0 instead of a 3.5 or lower.

Edit #2

If you need to access your scripts from IronPython, then you can load your assembly as well by doing:

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

Then to use it in script:

import MyPlayerScriptOrSomething

Note that you do not have to do the LoadAssembly for every script, just once to get the assembly.

Edit #3

The IronPython DLLs should be placed in a "Plugins" folder somewhere under "Assets" (most simply: Assets->Plugins. Here is my setup:

> Assets
> > Plugins
> > > IronMath.dll
> > > IronPython.dll
> > > Microsoft.Scripting.dll
> > > Microsoft.Scripting.Core.dll

Edit #4

Your scripts can be put anywhere your program has access to them. For instance, if you wanted to place "apple.py" directly under "C:\", you could execute that file by doing:

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

Edit #5

The version I am using is:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!