Hot Reload | Edit Code Without Compiling

UnityEditorで実行中にスクリプトを変更した場合、一度終了してコンパイルし、再度実行する必要があります。

Unityにはホットリロード機能があり、実行中のスクリプト変更を適用できますが、対応が難しく、あまり活用されていません。

今回紹介するHotReloadアセットを導入すると、Editorの実行を止めることなくスクリプトの変更を適用できます。

公式紹介PV

主な機能

  • 即時にコード変更を反映
    • 再生中に C# のスクリプトを変更し、即座に適用可能です。
  • エディタと実機の両方で動作
    • Unity Editor 上だけでなく、制限はありますが iOS / Android などの実機でも対応しています。
  • シームレス
    • 再生状態のままコードを調整できるため、デバッグがスムーズに行えます。

デモ

以下のコードを用意して、キューブをジャンプさせてみます。

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // ジャンプ
            _rigidbody.AddForce(Vector3.up * 5f, ForceMode.Impulse);
        }
    }

UnityEditor 上で再生中のまま、Updateメソッドを以下のように変更しました。

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // ジャンプ
            _rigidbody.AddForce(Vector3.up * 5f, ForceMode.Impulse);
        }
        if (Input.GetKeyDown(KeyCode.V))
        {
            // ジャンプ2
            _rigidbody.AddForce(Vector3.right * 5f, ForceMode.Impulse);
        }
    }

スクリプトの変更が検知されると、HotReload が差分を適用します。

Vキーを押すと、右方向に力が加わるようになりました。

変更内容が大きい場合、適用に時間がかかることがあります。

注意点

  • 変更が適用されない場合は、一度停止して再度再生する必要があります。
  • Updateなどには有効ですが、すでに実行されたAwakeStartを変更しても反映されません。
    • ただし、オブジェクトが再生成された際には、変更後の処理が適用されます。

体験版がある

体験版も公開されており、Asset Storeで購入する前に試すことができます。

まとめ

HotReloadアセットはUnityの公認ソリューションになっています。

簡単なパラメータ調整ならInspectorで対応できますが、ロジックを含めた変更となると手間がかかります。

HotReloadを導入すると、実行したまま試行錯誤できるため、開発効率が大幅に向上します。

価格はやや高めですが、セールで割引されることもあります。

気になる方は、体験版で試してみてください。

📣おしらせ!