(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

SpriteAtlasから取得(Clone)した画像を使ってるImageを検索するエディタ拡張【Unity】【エディタ拡張】


このエントリーをはてなブックマークに追加



この記事でのバージョン
Unity 2022.3.16f1


はじめに

以前、シーンを開いた時等に「Could not extract GUID……」

「Broken text PPtr. GUID……」とエラーが出る場合の原因が、

Unityを再生していない時にエディタ拡張でSpriteAtlasからSpriteを取得(Clone)し、

そのSpriteをImageに設定した状態でシーンを保存していた事だという事がありました。


という事で今回は、そんな時に使える

SpriteAtlasから取得した画像を使ってるImageを検索するエディタ拡張の紹介です!

FindCloneImagesSearcher

早速ですが、SpriteAtlasから取得した画像を使ってるImageを検索するクラス

FindCloneImagesSearcherは以下の通りです。

#if UNITY_EDITOR

using UnityEngine;
using UnityEditor;
using UnityEngine.UI;
using System.Collections.Generic;

/// <summary>
/// Cloneされた画像を使ってるImageを検索(Could not extract GUID……みたいなエラー出た時用)
/// </summary>
public static class FindCloneImagesSearcher{
  
  [MenuItem("Tools/CloneのImage検索")]
  private static void FindImages() {
    var foundImages = new List<Image>();
    var images = Object.FindObjectsOfType<Image>(true);

    foreach (var image in images) {
      if (image.sprite != null && image.sprite.name.Contains("Clone")) {
        foundImages.Add(image);
        Debug.Log("Found Image with 'Clone' in name: " + image.gameObject.name, image);
      }
    }

    if (foundImages.Count == 0) {
      Debug.Log("No Images with 'Clone' in name found in the scene.");
    }
  }
}

#endif


このスクリプトを作成すると上部メニューに

「Tools/CloneのImage検索」というのが表示されるようになり、これを押すと


検索結果がログで出力されます。

なお、そのログをConsole上でクリックすれば該当のオブジェクトが選択されます。