この記事でのバージョン
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上でクリックすれば該当のオブジェクトが選択されます。