facebook twitter hatena line email

「Unity/Editor/inspector値更新」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「SampleScene.cs <pre> using UnityEngine; public class SampleScene : MonoBehaviour { [SerializeField] GameObject testView; [SerializeField] int num; // Start i...」)
 
行5: 行5:
 
public class SampleScene : MonoBehaviour
 
public class SampleScene : MonoBehaviour
 
{
 
{
     [SerializeField] GameObject testView;
+
     [SerializeField] GameObject testObject;
 
     [SerializeField] int num;
 
     [SerializeField] int num;
 
     // Start is called before the first frame update
 
     // Start is called before the first frame update
行33: 行33:
 
         serializedObject.Update();
 
         serializedObject.Update();
  
         var testView = serializedObject.FindProperty("testView");
+
         var testObject = serializedObject.FindProperty("testObject");
 
         var num = serializedObject.FindProperty("num");
 
         var num = serializedObject.FindProperty("num");
  
 
         num.intValue = 3;
 
         num.intValue = 3;
         testView.objectReferenceValue = GameObject.Find("TestView");
+
         testObject.objectReferenceValue = GameObject.Find("TestObject");
 
          
 
          
         EditorGUILayout.PropertyField(testView);
+
         EditorGUILayout.PropertyField(testObject);
 
         EditorGUILayout.PropertyField(num);
 
         EditorGUILayout.PropertyField(num);
  

2022年2月7日 (月) 20:12時点における版

SampleScene.cs

using UnityEngine;

public class SampleScene : MonoBehaviour
{
    [SerializeField] GameObject testObject;
    [SerializeField] int num;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

SampleSceneInspectorEditor.cs

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(SampleScene))]
public class SampleSceneInspectorEditor : Editor
{
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        var testObject = serializedObject.FindProperty("testObject");
        var num = serializedObject.FindProperty("num");

        num.intValue = 3;
        testObject.objectReferenceValue = GameObject.Find("TestObject");
        
        EditorGUILayout.PropertyField(testObject);
        EditorGUILayout.PropertyField(num);

        serializedObject.ApplyModifiedProperties();
    }
}

参考:https://www.hanachiru-blog.com/entry/2020/10/19/120000#SerializedObject%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%84%E3%82%8A%E6%96%B9