update unity script prefab from create mono ironpython unity3d

mono - script - IronPython en Unity3D



unity static inspector (1)

Entonces, desde una secuencia de comandos de Unity:

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

Y dentro de un script de python (el mío era apple.py ubicado en la misma carpeta que game.exe):

import UnityEngine from UnityEngine import * Debug.Log("Hello From IronPython!")

Editar # 1

Debo señalar que la razón por la que recibí un error antes era porque la versión de tiempo de ejecución se especificaba como 4.0 en lugar de 3.5 o menos.

Editar # 2

Si necesita acceder a sus scripts desde IronPython, puede cargar su ensamblaje también haciendo:

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

Luego para usarlo en script:

import MyPlayerScriptOrSomething

Tenga en cuenta que no tiene que hacer LoadAssembly para cada script, solo una vez para obtener el ensamblado.

Editar # 3

Las DLL de IronPython deben colocarse en una carpeta de "Complementos" en algún lugar debajo de "Activos" (más simplemente: Activos-> Complementos. Aquí está mi configuración:

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

Editar # 4

Sus scripts pueden colocarse donde su programa tenga acceso. Por ejemplo, si quiere colocar "apple.py" directamente debajo de "C: /", puede ejecutar ese archivo haciendo:

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

Editar # 5

La versión que estoy usando es:

Estoy tratando de usar IronPython como un lenguaje de scripting externo para Unity3D. Los DLL necesarios para la ejecución de IronPython se cargan bien dentro de Assets / Plugins. Sin embargo, cuando intento ejecutar el script obtengo este error:

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>

La secuencia de comandos y el ''UnityEngine.dll'' se encuentran en la misma carpeta. Este es el guion:

import clr clr.LoadAssemblyFromFile("UnityEngine.dll") import UnityEngine from UnityEngine import * Debug.Log("Hello World from Python!")