3: 2015-06-19 (金) 23:09:57 iseki |
4: 2015-06-21 (日) 01:19:38 iseki |
| - http://baba-s.hatenablog.com/entry/2015/06/09/104109 | | - http://baba-s.hatenablog.com/entry/2015/06/09/104109 |
| #br | | #br |
- | Material OnAssignMaterialModel(Material material, Renderer renderer) | + | using UnityEngine; |
- | { | + | using UnityEditor; |
- | //テクスチャの名前 | + | using System.IO; |
- | string textureName = material.mainTexture.name; | + | |
- | //作成して保存するマテリアルのパス | + | |
- | AssetDatabase.CreateFolder (Path.GetDirectoryName(assetPath), \\"Materials\\"); | + | |
- | string materialPath = string.Format(\\"{0}/Materials/{1}.mat\\", Path.GetDirectoryName(assetPath),textureName); | + | |
| | | |
- | Debug.Log(\\"assetPath:\\"+assetPath); | + | public sealed class SelectColladaShader : AssetPostprocessor |
- | Debug.Log(\\"textureName:\\"+material.mainTexture.name); | + | { |
- | Debug.Log(\\"materialPath:\\"+materialPath); | + | Material OnAssignMaterialModel(Material material,Renderer renderer) |
| + | { |
| + | string currentDir = Path.GetDirectoryName (assetPath); |
| + | if (!AssetDatabase.IsValidFolder (currentDir + "/Materials")) { |
| + | AssetDatabase.CreateFolder (currentDir, "Materials"); |
| + | } |
| | | |
- | //パスとテクスチャの名前によって、マテリアルを切り替える | + | if (material.mainTexture == null) { |
- | //パスにcharacterという文字が含まれていたら | + | return null; |
- | material.shader = Shader.Find(\\"Legacy Shaders/Diffuse\\"); | + | } |
| + | string textureName = material.mainTexture.name; |
| + | string materialPath = string.Format("{0}/Materials/{1}.mat", currentDir, textureName); |
| | | |
- | //シェーダーを変更したマテリアルをmaterialPathに保存する | + | Material mt = AssetDatabase.LoadAssetAtPath<Material>(materialPath) as Material; |
- | AssetDatabase.CreateAsset(material, materialPath); | + | |
| | | |
- | Debug.Log(string.Format(\\"CustomModelImporterの処理により、以下の場所に[{1}]シェーダーのマテリアルを作成しました。\\\\n{0}\\",materialPath,material.shader.name)); | + | if (mt==null) { |
- | return material; | + | material.shader = Shader.Find("Legacy Shaders/Transparent/Diffuse"); |
- | } | + | AssetDatabase.CreateAsset(material, materialPath); |
| + | Debug.Log(string.Format("CustomModelImporterの処理により、以下の場所に[{1}]シェーダーのマテリアルを作成しました。\n{0}",materialPath,material.shader.name)); |
| + | // |
| + | mt = material; |
| + | } |
| + | |
| + | return mt; |
| + | } |
| + | } |