如果在我正在开发的这款游戏中使用的沙箱中的IronPython脚本中调用locals
函数,则会收到错误消息“未定义名称'locals'”,但是如果我在独立脚本中调用它, 有用。可以从沙箱中的脚本上下文中删除locals
函数吗?
编辑:添加了一个示例脚本,当我在转弯中运行该脚本时,该脚本有效,但是当我生成下一转弯时,该脚本崩溃,提示未定义str
。
import sys, imp;
import __builtin__ as builtins;
builtins_code = """""";
exec builtins_code in builtins.__dict__;
import clr
clr.AddReference('System.Core')
import System
clr.ImportExtensions(System.Linq)
clr.AddReference('FrEee.Core')
import FrEee
import FrEee.Utility
clr.ImportExtensions(FrEee.Utility.Extensions)
from FrEee.Modding import Mod
from FrEee.Game.Objects.Space import Galaxy
from FrEee.Game.Objects.Civilization import Empire
'Generates ' + str(ShieldPointsGenerated) + ' shield points.'
像这样注入ShieldPointsGenerated
变量:
engine.GetBuiltinModule().SetVariable(kvp.Key, kvp.Value);
其中的键/值对是我在脚本中使用的变量名和值。