はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】アセットが変更時にアセットの自動更新をしないようにする(自動コンパイル無効化, Auto Refresh)

はじめに

今回はスクリプトが変更されたときに自動でコンパイルがされないようにする方法について紹介をしたいと思います。

docs.unity3d.com

Auto Refresh

Preferences/Asset Pipline/Auto Refresh(Unity2021.3以前?はPreferences/General/Auto Refresh)をオフにすることで、アセットが変更されたときにアセットの自動更新を行わないようにすることができます。

デフォルトはオンです。

これを有効にすると、アセットが変更されたときに、アセットの自動更新を行います。

環境設定 - Unity マニュアル

Auto Refreshをオフに


更新を行うためにはCtrl + R(Macならcommand + R)を押すか、メニューバーのAssets/Refreshを押します。

Assets/Refresh

再生時にコンパイルを行う

調べたら以下のプロジェクトを見つけました。インストール方法はmanifest.jsonに以下を打ち込めばOKです。

  • "com.jfranmora.editorextensions.compile-before-play": "https://github.com/jfranmora/unity-compile-before-play.git#upm"

github.com

また中身を見てみると、以下のコードをEditor内にいれるだけで良いようですね。

using UnityEditor;

namespace JfranMora.EditorExtensions
{
	public static class CompileBeforePlay
	{
		[InitializeOnLoadMethod]
		public static void Initialize()
		{
			if (EditorApplication.isPlaying) return;

			EditorApplication.update += Update;
		}

		private static void Update()
		{
			if (EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isPlaying)
			{
				AssetDatabase.Refresh();
			}
		}
	}
}