[Unity] HotReloadアセット コンパイルが遅い悩みを軽減する

アセット紹介

Unityってプログラムを保存するたびにコンパイルするから、試行錯誤や調整をしているときにと~っても時間かかって困るんだ

そうだね。ちょっと修正するたびに全体をコンパイルするからとても時間かかるよね。

でもHotReload って値段が高いし悩んでるんだ

大丈夫、買ったから紹介するね!

本記事では、HotReloadアセットについて紹介します。HotReloadを使うとコードの差分変更を行う際の長時間のコンパイル待ちがなくなります。開発のスピードアップと効率化ができるかもしれません。

まずは結論を簡単にご紹介します。

HotReloadは必須アイテムです

全体コンパイルの頻度を大幅に減らすというアセットなので、規模や開発スタイルによっては非常に大きい恩恵を得られると思います。もし1日20回×2分=40分節約できるとしたら・・・?
一方、初学者の方はゲームの規模が小さく1回当たりのコンパイルが短いと思いますので、今は見送ってもよいと思います。

体感的には、unityroomやストアなどに公開している、あるいは公開を目指している方は効果が大きいので買いと思います。

買った方がいい人
  • DoTweenや動的パラメータなど、スクリプトで調整する作業がよくある
    ジャンプ距離、走る速度、エフェクト、などなど全般
  • スマホ(Android, iOS)向け開発をしている
    実機のホットリロードができるのは最高
  • うまくいかないところを試行錯誤することがある
    数十回の全体コンパイルがゼロになるのでスムーズに試せる
今は買うのを見送ってもよさそうな人
  • 開発規模が小さい
  • コンパイル時間が気にならない
  • 自分で再コンパイル対策をしている

HotReloadアセットとは

ホットリロード自体は一般的な用語で、実行中のゲームやアプリにコード変更を反映する仕組みです。
それをUnityでできるようにしたのがHotReloadアセットで、コンパイルせずにコードの変更を即座に反映できるUnity C#の拡張機能です。

Unityやってるとコードを編集して保存したときにUnityがフリーズしてコンパイルしている時間があると思います。

あれをほぼなくせます。Editモードだけでなく、Play中やモバイル実機の実行中でさえ動作します。

試しにDoTweenの調整やモバイル実機特有のバグ調査に使ってみたところ快適に作業できました。
特にモバイル実機の調整作業でビルド時間がなくなるのはホットリロードの大きな恩恵です。

DoTweenの調整作業の例。Tweenの方法(Ease)や大きさなど微調整を繰り返している

なお、DoTweenの調整だけであれば安価なDoTween Pro版で画面みながら調整できます

(動画の使用アセット)

Easy Character Movement 2Eternal TempleDOTween ProFresh Bread

HotReloadのいいところ

  • セットアップが簡単
    実はHotReloadアセットの他にもホットリロードに似たテクやアセットは存在するのですが、設定が煩雑です。一方、HotReloadはインストールしてボタンを1つ押せば動作します。
  • 動作確認しながらプログラミングできる
  • 大規模ゲームでも早い
    公式によると差分を反映する仕組みなので規模の大小にはかかわらず爆速反映できるそうです
  • モバイル実機に対応している
    有線やWifiで実機へBuild And Runしたときでも使えます
    いったん実機プレイを中断しても再開したときに再接続する仕組みがあり、使いやすい印象でした
  • サポートがしっかりしている
    レビューを見ると、今のところはサポート運営がしっかりしているようです

HotReloadのイマイチなところ

  • ちょっと値段が高い
    77ドルは勇気がいります。公式ページに7日間無料体験版ありますので試してから買うのがいいかもしれません
  • まだリリースから間もない
    2023年5月にアセットストアへリリースされたばかりなので、なにかしらの不具合があるかもしれませんし、ないかもしれません。

いまのところデメリットらしいところは値段だけですね。

使ってみて分かったこと

  • コルーチンには対応していないらしいが、できた(?)
    レビューによるとコルーチンには対応してないそうですが、実際に試したらできました・・・
    特定のケースだけ対応できるなど、条件があるのかもしれません
  • Playに移るときにコンパイルすることがある
    試してみての体験なのですが、Playボタンで実行するときは1回コンパイルが発生することがあるみたいです
  • スマホ実機のアプリがたまにフリーズする
    これも試してみてなのですが、実機でコード変更を続けているとたまにアプリがフリーズしました
    でも実機でアプリを終了してもう一回スマホ側で起動すると再接続が出てきて、またHotReloadできるようになりました

HotReloadの使い方

HotReloadはインストールしたらすぐ使えます。設定もほぼワンクリックです。

インストール

アセットストアで購入したら、いつものようにパッケージマネージャかアセットストアのリンクからImportしましょう。

起動

ウインドウ→HotReloadで画面が開きます。

初回起動時に追加のダウンロードを促されますが、絶対必要なのでYesします(画像を撮り忘れました、ごめんなさい)。
UnityプロジェクトではなくPCに保存されるので本当に初回だけでOKです。
これはHotReloadがWin、Mac、Linuxなどに対応するための処置だそうです。
ちなみに保存場所は「%LocalAppData%/singularitygroup-hotreload/」です

ホットリロードのスタートとコード編集の反映方法

ホットリロードを開始するには、HotReload画面のStartボタンを押します。差分反映の基準となるコンパイルがされますので少し待ちます。準備ができると、Waiting for code changes状態になります。これでスタート完了です。

この状態でコードを編集すると、HotReload画面が変更反映中になります。
反映が終わるAll patched applied状態になり、また変更待ちに戻ります。

モバイル実機のホットリロード

モバイル実機はデバッグビルドで実機に接続していればホットリロードが反映されます。
うまくいかないときはHotReload設定画面のsettingsの下のほうにあるOn-Deviceのチェック項目が全部緑なことを確認してください。赤い場合は、Fix Allを押せばよいです。

HotReloadアセットのまとめ

本記事では、HotReloadを紹介しました。
HotReloadはコンパイルせずにコードの変更を即座に反映できるUnity C#の拡張機能です。
プログラミング中のコンパイルが占める時間は意外と多いので、HotReloadを使って効率をアップできます。

少し高いのですが買いか否かと聞かれれば、買いです。
おそらくツール系のアセットでこれほど作業効率を向上させるものは少ないでしょう。

もしUnityゲーム制作を続けていくのであれば、HotReloadは強い味方となるでしょう。

かわいい我が子にオリジナルアプリを!

コメント

タイトルとURLをコピーしました