So, I have a serialized object which contain a component like this:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
[System.SerializableAttribute]
public class ControllerComponent : MonoBehaviour {
public bool image = false;
public bool quiz = false;
public Vector3 originalRotation;
[SerializeField]
public float timeStamp;
[SerializeField]
public Sprite displayedImage;
Now, on [InitializeOnLoad] from other script I initialize the field “timeStamp” to 5. As I edit the xml file to get the data from, [InitializeOnLoad] will create another object with the above component. However, I don’t want to have duplicated components, so I want to get the data from the new component and update them to the old component, and then remove the new component.
When I print out something, I can see the data is updated to the old component, but nothing changes on the inspector. Here is how I did it:
static void updateContent(Transform a, Transform b){
ControllerComponent componentA = a.gameObject.GetComponent<ControllerComponent> ();
ControllerComponent componentB = b.gameObject.GetComponent<ControllerComponent> ();
EditorGUI.BeginChangeCheck ();
var serializedObjectA = new SerializedObject(componentA);
var serializedObjectB = new SerializedObject(componentB);
serializedObjectA.CopyFromSerializedProperty(serializedObjectB.FindProperty("timeStamp"));
if (EditorGUI.EndChangeCheck ()) {
serializedObjectA.ApplyModifiedProperties ();
EditorGUIUtility.LookLikeControls ();
EditorUtility.SetDirty (componentA);
}
Debug.Log("current Time " + serializedObjectA.FindProperty("timeStamp").floatValue);
}
Can someone show me how to update it on the inspector please? Thank you!