프로젝트 내의 모든 에셋들은 GUID를 부여 받게 되고 이를 통해 구분하게 된다.
var resultGuid = AssetDatabase.FindAssets("t:material");
if (resultGuid != null)
{
for (int i = 0; i < resultGuid.Length; i++)
{
string guid = resultGuid[i];
string path = AssetDatabase.GUIDToAssetPath(guid);
var loadedMat = AssetDatabase.LoadAssetAtPath<Material>(path);
if (loadedMat != null)
{
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.position = new Vector3(i * 2, 0, 0);
cube.GetComponent<Renderer>().material = loadedMat;
}
}
}
guid는 AssetDatabase 클래스를 통해 찾거나 이용 가능하다.
메테리얼을 찾을 경우 FindAssets 함수에 타입 "t:"와 "material"을 합쳐서 전달해주면 된다.
혹은 파일 이름이나 label 등을 검색 할 수 있음 (참고)
if (GUILayout.Button("create asset"))
{
var loadedMat = new Material(Shader.Find("Standard"));
AssetDatabase.CreateAsset(loadedMat, $"Assets/TestMat{(int)Random.Range(0, 100)}.mat");
}
CreateAsset 함수를 통하여 에셋을 생성하는 것이 가능