Описание
Создавайте скрипты только в проекте.
Прежде чем вы сможете использовать BuildScriptsOnly, вам необходимо собрать весь проект. Затем вы можете запускать сборки, содержащие только изменения сценария.
В следующем примере скрипта используется 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);
}
}
Используйте скрипты сборки/сборки
, чтобы повторно сгенерировать приложение, а затем запустить его. Теперь приложение будет отображать случайные изменения цвета фона. Однако добавленные кубы и сферы не видны.