SetTerainMat.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace UnityEditor {
  5. public class SetTerainMat
  6. {
  7. [MenuItem("Assets/Generate Material")]
  8. public static void CreateMaterial() {
  9. if (Selection.activeGameObject == null) return;
  10. Debug.Log(Selection.activeGameObject.name);
  11. foreach (Transform transform in Selection.activeGameObject.transform) {
  12. string name = transform.gameObject.name;
  13. Material material = new Material(Shader.Find("Unlit/Texture"));
  14. material.name = name;
  15. string path = "Assets/Art/Textrue/Terrain/" + name + ".jpg";
  16. UnityEngine.Object tex = AssetDatabase.LoadAssetAtPath<UnityEngine.Object>(path);
  17. Texture2D texture = tex as Texture2D;
  18. if (texture != null) {
  19. material.SetTexture("_MainTex", texture);
  20. }
  21. Terrain terrain = transform.gameObject.GetComponent<Terrain>();
  22. terrain.materialTemplate = material;
  23. string sapath = "Assets/Art/Material/Terrain/" + name+".mat";
  24. AssetDatabase.CreateAsset(material, sapath);
  25. AssetDatabase.SaveAssets();
  26. }
  27. AssetDatabase.Refresh();
  28. }
  29. }
  30. }