Skip to content

Instantly share code, notes, and snippets.

@makoto-unity
Created April 14, 2017 15:41
Show Gist options
  • Save makoto-unity/ba976cff378c1ce903f2a357568b67ae to your computer and use it in GitHub Desktop.
Save makoto-unity/ba976cff378c1ce903f2a357568b67ae to your computer and use it in GitHub Desktop.
Material Renamer
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
public class MaterialEditor {
// 使い方
[MenuItem("MyTools/Rename Material")]
static void RenameMat()
{
Object [] objs = Selection.objects;
foreach (var obj in objs)
{
Material mat = obj as Material;
if ( mat != null )
{
Debug.Log("mat:" + mat.mainTexture.name);
string path = AssetDatabase.GetAssetPath(obj);
AssetDatabase.RenameAsset(path, mat.mainTexture.name);
}
}
}
// 使い方
[MenuItem("MyTools/Rename GameObject")]
static void RenameGO()
{
GameObject[] objs = Selection.gameObjects;
foreach (var obj in objs)
{
Material mat = obj.GetComponent<Renderer>().sharedMaterial;
obj.name = mat.name;
}
}
[MenuItem("MyTools/Assign Material")]
static void AssignMat()
{
Object [] objs = Selection.objects;
foreach (var obj in objs)
{
Material mat = obj as Material;
if ( mat != null )
{
string orgName = mat.name;
GameObject go = GameObject.Find(orgName) as GameObject;
if ( go != null )
{
string path = AssetDatabase.GetAssetPath(obj);
string dir = Path.GetDirectoryName(path);
Debug.Log(dir);
string newMatPath = dir + "/" + mat.mainTexture.name + ".mat";
Debug.Log(newMatPath);
Material anotherMat = AssetDatabase.LoadAssetAtPath<Material>(newMatPath);
Debug.Log(anotherMat.name);
go.GetComponent<Renderer>().sharedMaterial = anotherMat;
}
}
}
}
[MenuItem("MyTools/Assign Specular")]
static void AssignSpec()
{
Object [] objs = Selection.objects;
foreach (var obj in objs)
{
Material mat = obj as Material;
if ( mat != null )
{
string path = AssetDatabase.GetAssetPath(obj);
string dir = Path.GetDirectoryName(path);
string specTexPath = dir + "/SpecTextures/" + mat.mainTexture.name + "_s.psd";
Debug.Log(specTexPath);
Texture2D specTex = AssetDatabase.LoadAssetAtPath<Texture2D>(specTexPath);
if (specTex)
{
Debug.Log(specTex.name);
mat.SetTexture("_SpecGlossMap", specTex);
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment