本日は Unity の小ネタ枠です。
Inspectorのフィールド変更をスクリプトで検知して処理を行う例を記事にします。
OnValidate
スクリプトがロードされたとき、または Inspector で値が変更されたときに呼び出される Editor 専用の関数です。
docs.unity3d.com
テクスチャを切り替える
Inspector のフィールドからホロモンで利用するテクスチャを切り替える以下のサンプルスクリプトを作成しました。
・TextureChange.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TextureChange : MonoBehaviour { public enum TextureType { Normal, Special, } [SerializeField] private TextureType p_TextureType; [SerializeField] private Texture2D p_NormalTexture; [SerializeField] private Texture2D p_SpecialTexture; [SerializeField] private List<GameObject> p_TargetObjects; private void OnValidate() { foreach(GameObject targetObj in p_TargetObjects) { Material targetMat = targetObj.GetComponent<Renderer>().material; if (targetMat == null) continue; switch (p_TextureType) { case TextureType.Normal: targetMat.mainTexture = p_NormalTexture; break; case TextureType.Special: targetMat.mainTexture = p_SpecialTexture; break; } } } }
スクリプトを設定して差し替えるテクスチャを対象オブジェクトを指定します。