最近项目有需要修改每个物体从新创建材质并赋值贴图,由于数量庞大,每次创建材质太麻烦,就写个
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class BuildMaterial : UnityEditor.AssetModificationProcessor {
[MenuItem("MyTools/BuildMaterial")]
static void CreateMateral() {
GameObject selectObject = Selection.activeGameObject;
Sprite sp = selectObject.GetComponent<SpriteRenderer>().sprite;
Material mat= new Material(Shader.Find("Standard"));
//getassetPath获取到资源路径
int temp = AssetDatabase.GetAssetPath(sp).LastIndexOf('/');
//在获取到的路径里删除'/'后的 ".png"字符串就是根路径
string path = AssetDatabase.GetAssetPath(sp).Substring(0, temp);
AssetDatabase.CreateAsset(mat, path+"/"+ sp .name+ ".mat");
selectObject.GetComponent<SpriteRenderer>().material = mat;
}
}