Unity:ScriptableObjectの内容をシーンを開いた時に適用する
2016/05/22
category: Unity | tag: ScriptableObject | no comments
OnValidate()メソッドを使うことで、シーンを開いた時にScriptableObjectの内容を即座にシーンへ反映することが出来る。
スクリプトがロードされた時やインスペクターの値が変更された時に呼び出されます(エディター上のみ)
※公式ドキュメントMonoBehaviour.OnValidate()より抜粋
1 2 3 4 5 6 7 |
using UnityEngine; [CreateAssetMenu] public class SampleSO : ScriptableObject { public int num; } |
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 26 27 28 29 30 31 32 |
using UnityEngine; using UnityEngine.UI; public class TestOnValidate : MonoBehaviour { [SerializeField] private SampleSO so; [SerializeField] private Text label = null; void Awake() { RefreshLabel(); } void OnValidate() { RefreshLabel(); } /// <summary> /// ScriptableObjectの内容を反映する /// </summary> void RefreshLabel() { if (label != null) { label.text = so.num.ToString(); } } } |
12-15 : OnValidate()はエディタ上でしか呼び出されないので実行時のためにAwake()に記述。
17-20 : OnValidate()がシーンを開いた時に呼ばれる。
29 : ScriptableObjectの内容をシーン上へ反映する。
コメントを残す
コメントを投稿するにはログインしてください。