ゲーム開発チーム「丸ダイス」の開発ブログです! 公式サイトはこちら

【Unity】タイルが呪われることがある【Tilemap】

タイルパレット上のタイルが呪われる(?)ことがあるようです。

f:id:marudice:20220227183610p:plain

こちらは開発中のゲームのタイルパレットです。 パレットの画像の位置は、TileがBridge4なのにSpriteがPlayerInvになっていて、Bridge4タイルの本来のSpriteではないです。 似た現象として、TileがnullでSpriteだけ残ったりもします。

どうやら、なにかのきっかけで2つのタイルごとに組み合わせで呪われるようで、このケースではBridge4とPlayerInvの組が呪われています。 一度タイルがこの状態になると、呪われたタイルをA, Bとして

  • (TileがNonなので)パレット上でSpriteが表示されているにも関わらず消しゴムでは削除出来ない
  • パレット上でタイルAを置くと、もう一方のタイルBもタイルAに切り替わる
  • パレット上でタイルAを消すと、タイルBも消える

といったことが起きてしまいます。 パレット上からタイルを消してもダメなようでタイルを作り直すくらいしか解決策がなく、非常にやっかいです。

発生のきっかけは、パレットへのタイル追加がバージョン管理上で衝突した後に起きているような雰囲気です。

呪われたTileやSpriteのGUIDをパレット上で検索すると参照カウンタの配列にヒットするので、参照カウンタが壊れているのかもしれません。