コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】実機で読み込まれているマテリアルの一覧を取得する方法

概要

using System.Linq;
using System.Text;
using UnityEngine;

public class Example : MonoBehaviour
{
    private void Awake()
    {
        var list = Resources
            .FindObjectsOfTypeAll<Material>()
            .Where( c => ( c.hideFlags & HideFlags.NotEditable ) == 0 )
            .Where( c => ( c.hideFlags & HideFlags.HideAndDontSave ) == 0 )
            .ToArray()
        ;

        var sb = new StringBuilder();
        foreach( var n in list )
        {
            sb.AppendLine( n.name );
        }
        Debug.Log( sb.ToString() );
    }
}

Resources.FindObjectsOfTypeAll を使用することで
実機で読み込まれているマテリアルの一覧を取得できます

Unity が内部で使用しているマテリアルがリストに含まれないようにするために
hideFlags もチェックしています

Unity エディタではエディタが読み込んでいるマテリアルも
一覧に含まれてしまうため、あくまで実機専用の機能となります

参考サイト様