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
を導入すると、実行したまま試行錯誤できるため、開発効率が大幅に向上します。
価格はやや高めですが、セールで割引されることもあります。
気になる方は、体験版で試してみてください。