Editor拡張の練習で作ったスクリプト。
オブジェクトに複数のマテリアルが割り当てられていると、どの部分に、どのマテリアルが適用されているかが分かりにくいことがあります。
この立方体にはmat1〜mat3の3つのマテリアルを割り当ててますが、色が同じだと分かりません。
そんな時に、このスクリプトをオブジェクトに追加すると…
オブジェクトに適用しているマテリアル名のボタンがInspectorウィンドウに並び、それぞれのボタンを押すと、そのマテリアルの色が反転します。ボタンを2回押すと元の色に戻ります。
オブジェクトに適用するスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using UnityEngine; using System.Collections; public class MatIndicator : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } } |
・・・。空っぽです。
Editor拡張用のスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using UnityEngine; using System.Collections; using UnityEditor; [CustomEditor(typeof(MatIndicator))] public class MatIndicatorEditor : Editor { public override void OnInspectorGUI() { MatIndicator mat = target as MatIndicator; foreach(Material m in mat.renderer.sharedMaterials) { if(GUILayout.Button(m.name)) { Color tmpColor = m.color; tmpColor.r = 1.0f - tmpColor.r; tmpColor.g = 1.0f - tmpColor.g; tmpColor.b = 1.0f - tmpColor.b; m.color = tmpColor; } } } } |
こっちが重要。スクリプトが適用されているオブジェクトに含まれるマテリアルをループで取り出し、マテリアル名からボタンを作成しています。色は、ボタンが2回押されると元に戻るようにしてあります。
今、気づいたのですが中間的な色(R:128, G:128, B:128)だと反転しても色が変わりませんね…
どんな色でも大丈夫なように、修正して使ってください。
パッケージのダウンロード
自分でスクリプトを用意するのが面倒な方は、以下からダウンロードして下さい。
matIndicator.unitypackage (2KByte)
ダウンロードしてプロジェクトにインポートしてご使用ください。
コメントを残す
コメントを投稿するにはログインしてください。