渋谷ほととぎす通信

新しいこと、枯れたこと問わず大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ

子階層のSpriteRendererのSpriteが1つでも未設定だったらリストを赤くするUnityのEditor拡張


オブジェクトの設定が正しいかどうかをチェックする方法を考えていて、見た目から分かるアプローチをやってみます。

お題は「SpriteRendererのSprite設定がnullのオブジェクトを分かりやすくする」です。

Hierarchy、Projectそれぞれ処理を書く

  • EditorApplication.hierarchyWindowItemOnGUI
  • EditorApplication.projectWindowItemOnGUI

EditorApplicationの hierarchyWindowItemOnGUIprojectWindowItemOnGUI メソッドでそれぞれEditor拡張を書いていきます。

Hierarchyビューでの見え方

f:id:esakun:20190805035011p:plain:w450

Projectビューでの見え方

f:id:esakun:20190805035039p:plain:w450

Hierarchyビュー、ProjectビューそれぞれSpriteが外れていたら、うっすらですが背景が赤くなるようにしています。

全ソースはこちら

最後に

static bool IsValid(GameObject go)
{
    var arr = go.GetComponentsInChildren<SpriteRenderer>();
    return arr.Any(x => x.sprite == null);
}

IsValidの部分の条件を書き換えれば、使い回せます。
プロダクトの規模が大きくなればなるほどバリデーションやチェックツールは必要になってきます。
そんなときの手段の一つとして手元においておこうと思います。

環境

  • Unity2019.1.9f1