我在这个问题上遇到了很多困难。由于文件在这个问题上是不存在的,样本很少,我必须倾向于SO社区。 p>
我所做的就是让我的模型围绕Z轴旋转。为此我每次更新都执行一个python脚本:
renderComp = Entity.GetComponent[Render3DComponent]()
rot = renderComp.Rotation
renderComp.Rotation = rot.Z + MathHelper.ToRadians(0.01)
而 Entity 是在pass-thru范围内执行之前设置的游戏实体。 Render3DComponent 是包含对象的缩放和旋转的组件(至少现在)并呈现模型。 旋转因此是 Vector3 ,它存储所有三个轴旋转值。
一旦我执行了脚本,就会告诉我:
IronPython.Runtime.UnboundNameException:' name' Render3DComponent'是 没有定义'
我的引擎设置如下:
_engine = Python.CreateEngine(options);
_engine.Runtime.IO.RedirectToConsole();
_engine.Runtime.LoadAssembly(AppDomain.CurrentDomain.GetAssemblies()
.First(a => a.FullName.Contains("MonoGame.Framework")));
_engine.Runtime.LoadAssembly(Assembly.GetEntryAssembly());
_engine.Runtime.LoadAssembly(Assembly.Load("mscorlib"));
_scope = _engine.CreateScope();
Console.SetOut(TextWriter.Synchronized(_engine.Runtime.IO.OutputWriter));
因此,实际上应该已经引用了我的游戏程序集和MonoGame。 尽管如此,我还尝试在脚本中添加引用(毕竟在我看来这是一个性能问题):
import clr
clr.AddReferenceToFileAndPath("AlphaEnergy.exe")
clr.AddReferenceToFileAndPath("MonoGame.Framework.dll")
from AlphaEnergy import Render3DComponent
renderComp = Entity.GetComponent[Render3DComponent]()
rot = renderComp.Rotation
renderComp.Rotation = rot.Z + MathHelper.ToRadians(0.01)
但后来我得到了这个例外:
IronPython.Runtime.Exceptions.ImportException:'无法导入名称 Render3DComponent'
所以我真的不知道问题应该是什么。我记得这更容易使用...
由于我在运行时期间按需执行脚本,因此我无法让Visual Studio的调试器使用它。