我下面有一个测试代码。
IEnumerator Temp2()
{
string _strDefine = "test";
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android,
_strDefine);
#if test
Debug.Log("???");
#endif
yield break;
}
结果是,如果之前未定义Define'test',则记录???不显示。
我希望在定义define之后立即设置“测试”。
我该怎么办?
答案 0 :(得分:2)
这是您无法想到的方式。
更改ScriptingDefineSymbols
后,必须由Unity重新编译代码。
因此,在重新编译之前,您将永远不会看到包装在#if test
预处理器中的代码块。
→重新编译之前,ScriptingDefineSymbols
之后的更改将永远不会带来影响。
答案 1 :(得分:1)
在雨果评论后编辑
您可以使用PlayerSettings.SetScriptingDefineSymbolsForGroup
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, "test");
但是随后您需要重新编译代码(如之前在derHugo答案中所述),因此它在第一次运行时将无法工作。
无论如何,如果您尝试执行此操作,则将定义符号用于不需要的内容。您应该使用布尔值作为逻辑。
如果您仍想更改定义设置,则可以在编辑器中进行。
还请考虑在编辑器中对其进行更改将自动编译脚本(除非您明确告知编辑器不要这样做)
编辑->项目设置->播放器设置。
从那里,您将test
添加到脚本定义符号中。