【Unity】インポート設定を変えずにアセットを更新する
Unityで画像などをインポートした後に、
「あ! アニメーションが1ドットずれてる!」
なんて気付くこともよくあります。(え? ないって?)
画像ファイルを更新したいけど、更新してもう一度インポートしなおすとまた圧縮設定やスプライトの設定をやり直す羽目に……。
Singleにしているスプライトだったら許容範囲ですが、Multipleにしていて、かつそれぞれのスプライトに名前を付けていたら……またやり直すのはしんどいです。
という訳でこの記事で紹介するのは、ちょっと強引ですが、インポート設定を変えずにファイルを更新する方法です。
環境
macOS 10.14 Mojave
Unity2018.4.5f1
Unity Hub 2.1.0
再インポートの影響範囲
ここでの再インポートとは、Unityのプロジェクト内にインポートしたファイルを一度削除して、もう一度インポートすることを指しています。
というのも、UnityのProjectウィンドウでファイルを上書きしようとしても、ファイル名が変更された上で新しいファイルが作られちゃうんですよね。
スプライト名の付け直し
これは2D用の複数スプライトが含まれるファイルをインポートするときに関係します。
例えばキャラクターの歩行グラフィックなどをインポートする場合は、上の画像のようにMultipleを選択し、1枚のテクスチャーから複数のスプライトを切り出します。
Sprite Editorでの分割は簡単ですが、その後名前を付けていく場合はそれぞれのスプライトに名前を付けていくかと思います。ここが結構めんどくさいんですよね。
下の画像だと16枚のスプライトにそれぞれ名前を設定しているところです。
ファイルを再インポートした場合は、これらの設定をもう一度やらなきゃいけないので結構時間がかかります。1ドットのズレが多くの作業時間を生み出してしまうことを考えるのは胃にきます。
3Dモデルのインポート時
個人的にもうひとつ影響が大きいと感じているのが、3Dモデルを再インポートするとき。設定を行うタブが4つある上に、以下の画像のように項目数も多いんです。
私の場合はBlenderで3Dモデルを作るので、色々と設定をいじる必要があり、毎回やるには大変なんです。モデルをシーンでGameObjectにした後、設定を加えてPrefab化……という流れで作業を行なっているため、これを毎回となると……ねぇ?
アニメーションの設定なんかも、毎回やり直すのは心が折れそうになります。
NullReferenceExceptionが出る
何かの素材をインポートしてゲーム内で使っているときには、再インポート時にNullReferenceExceptionが出ます。
もともとあったファイルを削除した時点で、割り振られていたGUID(グローバルで一意なID)が変わってしまうため、シーン内のオブジェクトから参照されていたファイルがNull扱いに。これを参照させたままにするとゲーム実行時にNullReferenceExceptionが飛び交ったりするんですよね。
2D Spriteのゲームオブジェクトがある場合などは参照されているスプライトが正しいか注意深く見る必要があります。
GUIDを変えずにファイルを更新できたらこんな気を使わなくていいのに……。
解決策: Unityの外でファイルを更新
そう、GUIDを変えなければいいんです。
Projectウィンドウにファイルをドラッグ&ドロップすると新しくGUIDが割り振られてしまうので、GUIDが変わらないようにエクスプローラやFinderでファイルを上書きすればいいんです。
……ちょっと強引かしら。
まぁいいや。
インポート設定は、インポートされたファイルをUnityでどのように使うかの設定なので、ファイル自体が変わったとしても維持されます。
インポート設定に影響しない範囲の細かな修正なら、元ファイルを上書きしちゃった方が早いです。
3Dモデルなどでは、実際にUnityで動かしてみたら修正が必要だった! なんてことが日常茶飯事なので、毎回インポートしなおすのではなく、ファイル自体を更新する方法も考えてみてください。
大幅にファイルが更新される場合、例えばスプライトを分割する大きさが変わるといった場合は、おとなしく新しいファイルをインポートして、参照を張り替えてください。
強引な方法ではありますが、インポートのし直しで時間が取られているのであれば、試してみてくださいな。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】オブジェクトの複数選択を使いこなして効率アップ! 2019.08.11
-
次の記事
アルゴリズムってなんやいね? って時に読む記事【初心者向け】 2019.08.22
コメントを書く