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などには有効ですが、すでに実行されたAwakeやStartを変更しても反映されません。- ただし、オブジェクトが再生成された際には、変更後の処理が適用されます。
体験版がある
体験版も公開されており、Asset Storeで購入する前に試すことができます。
まとめ
HotReloadアセットはUnityの公認ソリューションになっています。
簡単なパラメータ調整ならInspectorで対応できますが、ロジックを含めた変更となると手間がかかります。
HotReloadを導入すると、実行したまま試行錯誤できるため、開発効率が大幅に向上します。
価格はやや高めですが、セールで割引されることもあります。
気になる方は、体験版で試してみてください。
📣おしらせ!
Unity Asset Storeで GROW YOUR GARDEN セール が開催中です。
農業関係のアセットなどが最大50%OFFでセール中です。