除了 Unity 的内置脚本符号,您还可以指定自己的自定义脚本符号,可以使用Unity 编辑器、通过脚本或通过资源文件。
要通过编辑器设置或删除定义指令,请转到编辑 > 项目设置 > 播放器。然后在其他设置面板中,向下滚动到脚本编译。
您可以使用+和-按钮将您自己的自定义脚本符号添加到脚本定义符号列表中或从中删除,并将新符号的名称键入字段中。选择应用后,将应用您的新脚本符号,Unity 将使用这些新符号重新编译项目中的脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
参见词汇表。
复制定义按钮将列表中当前的自定义脚本符号集复制到剪贴板中,作为以分号分隔的值的字符串。
您可以使用以下 API 定义脚本符号
如果您需要通过编辑器中的脚本定义脚本符号,以便您的编辑器脚本受更改影响,则必须使用PlayerSettings.SetScriptingDefineSymbols。但是,关于其操作方式,有一些重要的细节需要注意。
重要提示:从脚本调用此方法不会立即应用更改并重新编译您的脚本。要使您的新符号生效,必须将控制权返回给编辑器,然后编辑器将异步重新加载脚本并根据您的新符号和作用于它们的指令重新编译它们。
例如,如果您在编辑器脚本中使用此方法并在下一行立即调用BuildPipeline.BuildPlayer
,则 Unity 仍在使用旧的脚本符号集运行您的编辑器脚本,因为它们尚未重新编译。这意味着,如果您有作为 BuildPlayer 执行的一部分运行的编辑器脚本,它们将使用旧的脚本符号运行,并且您的播放器可能无法按预期构建。
当编辑器在批处理模式下运行时,它以无头方式运行,因此没有编辑器循环来触发脚本的重新编译。您不应在持续集成 (CI) 服务器上使用编辑器脚本在批处理模式下设置脚本符号。脚本将不会重新编译,并且您的更改将不会应用。
如果您需要在以批处理模式运行的编辑器中定义特定符号,则必须确保编辑器从一开始就定义了正确的符号。您可以通过使用 csc.rsp 资源文件指定符号,而不是使用编辑器脚本来实现。
您可以通过项目中的文本资源设置自定义脚本符号。为此,您必须在项目的Assets文件夹的根目录中添加一个定义自定义脚本符号的名为csc.rsp
的文本文件。此特殊文件由 Unity 在启动时读取,并在编译任何代码之前应用。
例如,如果您在csc.rsp
文件中包含单行-define:UNITY_DEBUG
,则符号UNITY_DEBUG
将作为 C# 脚本的全局定义脚本符号包含在内,但编辑器脚本除外。
每次对.rsp
文件进行更改时,都需要重新编译才能使更改生效。您可以通过更新或重新导入单个脚本文件来执行此操作。