包含此页的版本:
不含此页的版本:
除了 Unity 的内置脚本符号外,您还可以定义自己的自定义脚本符号。定义自定义脚本符号的位置决定了它们的适用范围。您可以在以下位置定义自定义符号:
您可以定义适用于具有响应文件资产的整个项目的自定义脚本符号,如下所示:
csc.rsp并将其放置在项目的 Assets 文件夹的根目录中。-define:,后跟一个或多个分号分隔的脚本符号。Unity 在启动时读取此文件,并在编译任何代码之前应用它。例如,如果包含单行-define:UNITY_DEBUG;UNITY_TEST在你的csc.rsp文件、符号UNITY_DEBUG和UNITY_TEST作为所有 C# 的全局定义脚本符号包含在内脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表在项目中。
注意:对.rsp文件在 Unity 重新编译脚本之前不会生效。您可以通过更新或重新导入单个脚本文件来触发重新编译。
您可以定义特定于平台的自定义脚本符号,如下所示:
注意:“复制定义”按钮将当前自定义脚本符号集从列表中作为一串分号分隔的值复制到剪贴板中。
您可以为构建配置文件定义自定义脚本符号,如下所示:
注意:您可以使用-activeBuildProfile 命令行参数,使指定的生成配置文件及其自定义脚本符号从启动时适用。
您可以使用以下 API 来定义脚本符号:
PlayerSettings.SetScriptingDefineSymbolsBuildPlayerOptions.extraScriptingDefinesBuild.Player.ScriptCompilationSettings-extraScriptingDefines
BuildPlayerOptions.extraScriptingDefines和Build.Player.ScriptCompilationSettings-extraScriptDefines仅适用于播放器构建,因此在定义适用于编辑器脚本的脚本符号时,请使用PlayerSettings.SetScriptingDefineSymbols.这相当于在播放器设置中配置特定于平台的脚本符号的代码。
重要提示:从代码创建的符号SetScriptingDefineSymbols在编辑器重新获得控制权并重新编译脚本之前不会生效。例如,如果使用SetScriptingDefineSymbols,然后调用BuildPipeline.BuildPlayer在下一行,在上一行中创建的新交易品种将不会生效。在这种情况下,作为BuildPlayer执行运行时没有新符号,并且播放器可能无法按预期构建。
当编辑器以批处理模式运行时,没有触发脚本重新编译的机制。如果您需要在以批处理模式运行的编辑器中定义特定符号,则必须从启动时使用 csc.rsp 资源文件就位。
如果您在多个位置定义自定义脚本符号,Unity 会将适用于当前构建配置的所有符号相加。符号从每个作用域继承,而不是被覆盖,如下所示:项目范围的符号(从csc.rsp) + 特定于平台的符号(来自播放器设置)+ 构建配置文件符号(来自构建数据)。仅当平台和构建配置文件符号与活动构建配置文件匹配时,才会包括它们。
例如,假设项目在以下位置定义了以下自定义脚本符号:
| 位置 | 定义的符号 |
|---|---|
csc.rsp |
SYMBOL_A |
| Windows 播放器设置 | SYMBOL_B |
| Windows构建配置文件1 | SYMBOL_C |
| WindowsBuildProfile2 | SYMBOL_D |
鉴于此示例配置,下表显示了当不同的构建配置文件处于活动状态时,编辑器和播放器代码的哪些符号处于活动状态:
| 活动生成配置文件 | 活动符号 |
|---|---|
| 人造人 | SYMBOL_A |
| 窗户 |
SYMBOL_A,SYMBOL_B
|
| Windows构建配置文件1 |
SYMBOL_A,SYMBOL_B,SYMBOL_C
|
| WindowsBuildProfile2 |
SYMBOL_A,SYMBOL_B,SYMBOL_D
|
您可以使用#if指令。有关详细信息,请参阅测试条件编译。