🎮

ファイルを差し替える〜Unityの不思議

2025/02/28に公開2

CSVファイルを差し替える

歴史を三次元空間で可視化する『四次元年表』を作っているのだが、
まだUnityのサイトを直接データベースに繋いでいないので、
ときどき、データベースをCSVにして、Unity側を更新する。
そのとき、いつも使っている素人の手順がこれ。

  • データベースをCSVファイルにする。
  • CSVファイルをUnityのAssetに上げる。
  • Asset内の旧ファイルを削除する。
  • 新しいファイルをスクリプトに記載されている旧ファイルの名称に変更する。
  • Scriptが、新しいファイルを古いファイルと思って読み込む。

jpgファイルを差し替える

今回、パネルで表示している画像を差し替えたいと思った。
で、いつもうまくいっているCSVファイルの差し替え手順を踏襲したら、

うまくいかない。

新しい画像が認識されない。
さあ、爺様の出番ですね。

「Unityではアセットを削除して同じ名前のファイルを入れ直しても、同じ名前だからといって自動的に参照が復活するわけではありません。実際には、ファイル名ではなく「GUID」という一意のIDで参照を管理しているため、削除した時点で「別のアセット」として扱われます。」

ほおお。
なんでCSVではうまくいっていたかというと、
たぶん、Unityのオブジェクトが参照しているファイルじゃなく、
Scriptが読み込むファイルの名称だったから、なのだろう。
ということで、新しいファイルを

  • Canvas内のPanel上のImageに認識させる

という作業をしなければいけない。
が、半年以上前の作業なので、ぜんぜん忘れている。どうやったんだっけ?

  • Panel直下にImageを作って、ImageSauceを新しい画像に、ImageTypeをSimpleにする。

どうだ。
画像のサイズを微調整して、よし。

いつもFlutterと比較してもしようがないが

FlutterのAsset画像だったら、名前だけでいくんだけどなあ。

Discussion

Mitsuhiro KogaMitsuhiro Koga

Unityのインポート設定は同名ファイルで拡張子がmetaのファイルに保存されています。
Unityエディタに画像をドロップするとmetaファイルも更新されてGUIDが変わるので参照が切れてしまいます。
なのでエクスプローラーやFinderなどから直接jpgファイルを更新するとmetaファイルが更新されないので参照は切れずインポート設定も保持されます。

どんぐりどんぐり

おおお、ありがとうございます!!。その手があるんですね。次回やってみます!