Unity3D :自定义脚本符号

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

自定义脚本符号

C# 指令允许您根据是否定义某些脚本符号,有选择地在编译中包含或排除代码

除了内置脚本符号(与平台、编辑器版本和其他杂项系统环境方案相关)之外,您还可以使用编辑器 UI、脚本或资产文件指定自己的自定义脚本符号。

通过编辑器设置脚本符号

要通过编辑器设置或删除定义指令,请转到>播放器>编辑项目设置。然后在“其他设置”面板中,向下滚动到“脚本编译”。

“项目设置”窗口中的“脚本定义符号”设置。此示例显示列表中定义的两个自定义符号。
“项目设置”窗口中的“脚本定义符号”设置。此示例显示列表中定义的两个自定义符号。

您可以使用 +- 按钮在“脚本定义符号”列表中添加和删除您自己的自定义脚本符号,然后在字段中键入新符号的名称。选择“应用”时,将应用新的脚本符号,Unity 将使用这些新符号重新编译项目中的脚本。

复制定义”按钮将列表中的当前自定义脚本符号集作为分号分隔值字符串复制到剪贴板中。

通过脚本定义脚本符号

您可以使用以下 API 定义脚本符号:

  • PlayerSettings.SetScriptingDefineSymbolsForGroup
  • BuildPlayerOptions.extraScriptingDefined(英语:BuildPlayerOptions.extraScriptingDefined)
  • Build.Player.ScriptCompilationSettings-extraScriptingDefined(英语:Build.Player.ScriptCompilationSettings-extraScriptingDefined)

为编辑器脚本编译设置脚本符号

如果需要通过编辑器中的脚本定义脚本符号,以便编辑器脚本受到更改的影响,则必须使用 PlayerSettings.SetScriptingDefineSymbolsForGroup。但是,关于其运作方式,有一些重要的细节需要注意。

重要提示:此方法不会立即生效。从脚本调用此方法不会立即应用和重新编译脚本。为了使指令基于脚本符号的更改生效,必须允许将控件返回到编辑器,然后编辑器异步重新加载脚本,并根据新符号和作用于它们的指令重新编译脚本。

因此,例如,如果您在编辑器脚本中使用此方法,则立即在同一脚本中调用以下行,此时 Unity 仍在使用旧的脚本符号集运行编辑器脚本,因为它们尚未使用新符号重新编译。这意味着,如果您的编辑器脚本作为 BuildPlayer 执行的一部分运行,它们使用旧的脚本符号运行,并且您的播放器可能无法按预期进行构建。BuildPipeline.BuildPlayer

在批处理模式下设置脚本符号

了解上述 Unity 编译的异步性质对于了解您是否正在编写将在持续集成 (CI) 服务器上的 Unity 编辑器中以批处理模式运行的编辑器脚本也很重要。这是因为当编辑器以批处理模式运行时,它会“无头”运行,因此没有编辑器循环会导致它使用新的脚本符号重新编译。因此,不应使用编辑器脚本在批处理模式 CI 服务器中设置脚本符号,因为不会重新编译脚本,因此不会应用它们。

相反,如果需要在以批处理模式运行的编辑器中定义特定符号,则必须确保使用从一开始就定义的正确符号启动编辑器。为此,您可以使用 csc.rsp 资产文件而不是编辑器脚本指定符号,如下所述。

通过资产文件设置脚本符号

您可以通过项目中的文本资源设置自定义脚本符号。为此,必须添加一个文本文件,该文件定义在项目的 Assets 文件夹根目录中命名的自定义脚本符号。此特殊文件由 Unity 在启动时读取,并在编译任何代码之前应用。csc.rsp

例如,如果在 csc.rsp 文件中包括单行 -define:UNITY_DEBUG,则符号UNITY_DEBUG将作为全局定义的脚本符号包含在 C# 脚本中,编辑器脚本除外。

每次对 .rsp 文件进行更改时,都需要重新编译才能使其生效。您可以通过更新或重新导入单个脚本文件来执行此操作。

注意:如果只想修改全局脚本符号,请通过“播放器设置”窗口将它们添加到编辑器中的“脚本定义符号”中(如上所述),因为这涵盖了所有编译器。如果改为选择 .rsp 文件,则需要为 Unity 使用的每个编译器提供一个文件。

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :条件编译 (mvrlink.com)

下一篇:Unity3D :程序集定义 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号