Version: 2023.1

BuildOptions.BuildScriptsOnly

切换到手册

描述

仅在项目中构建脚本。

Before you can use BuildScriptsOnly, you need to build the whole Project. Then you can run builds that only have script changes. Rebuilding the player data will be skipped for faster iteration speed.

Platforms which support the incremental build pipeline will automatically run scripts only builds if Unity detects that the data files have not changed, even if BuildScriptsOnly is not used. You can still use BuildScriptsOnly to force a script only build and ignore any pending player data changes.

以下脚本示例便使用了 BuildScriptsOnly。该脚本最初会构建整个项目。在第一次运行脚本之后,可以使用该脚本仅编译脚本更改。要使用该脚本,请创建一个项目并在下面添加编辑器脚本和游戏脚本。

using UnityEditor;
using UnityEngine;

public class EditorExample : MonoBehaviour { [MenuItem("Build/Build scripts")] public static void MyBuild() { BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions(); buildPlayerOptions.scenes = new[] { "Assets/scene.unity" }; buildPlayerOptions.locationPathName = "scriptBuilds"; buildPlayerOptions.target = BuildTarget.StandaloneOSX;

// use these options for the first build buildPlayerOptions.options = BuildOptions.Development;

// use these options for building scripts // buildPlayerOptions.options = BuildOptions.BuildScriptsOnly | BuildOptions.Development;

BuildPipeline.BuildPlayer(buildPlayerOptions); } }

将以下简单脚本附加到场景中的空游戏对象:

using UnityEngine;

// Change the camera to the usual blue color and display a label.

public class ExampleClass : MonoBehaviour { private Camera cam;

void Awake() { cam = Camera.main; cam.clearFlags = CameraClearFlags.SolidColor; }

void OnGUI() { GUI.Label(new Rect(100, 100, 100, 50), "ExampleClass"); } }

现在运行 Build/Build scripts 示例。这会构建一个可执行文件。运行该可执行文件,随后将显示带有标签的深蓝色窗口。接下来,在项目中添加一些立方体和球体。进行以下脚本更改:

using UnityEngine;

public class ExampleClass : MonoBehaviour { private Camera cam;

// added line private float delay;

void Awake() { delay = 0.0f; cam = Camera.main; cam.clearFlags = CameraClearFlags.SolidColor; }

// added script code void FixedUpdate() { delay = delay + Time.deltaTime;

if (delay > 0.5f) { cam.backgroundColor = new Color(0.0f, 0.0f, Random.Range(0.0f, 0.25f)); delay = 0.0f; } }

void OnGUI() { GUI.Label(new Rect(100, 100, 100, 50), "ExampleClass"); } }

最后,交换 EditorExample 脚本中带注释的行:

using UnityEditor;
using UnityEngine;

public class EditorExample : MonoBehaviour { [MenuItem("Build/Build scripts")] public static void MyBuild() { BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions(); buildPlayerOptions.scenes = new[] { "Assets/scene.unity" }; buildPlayerOptions.locationPathName = "scriptBuilds"; buildPlayerOptions.target = BuildTarget.StandaloneOSX;

// use these options for the first build // buildPlayerOptions.options = BuildOptions.Development;

// use these options for building scripts buildPlayerOptions.options = BuildOptions.BuildScriptsOnly | BuildOptions.Development;

BuildPipeline.BuildPlayer(buildPlayerOptions); } }

使用 Build/Build scripts 重新生成应用程序,然后将其启动。该应用程序现在将显示背景颜色的随机变化。但是,添加的立方体和球体不可见。