Hi guys. I am working on a code less game engines (similar concept to RPG Maker) using Unity’s editors. We have our own custom Inspector in this project. One of the things
I want to do is change the value of a property of an object through this custom inspector. It changes, but as soon as I hit the play button it resets the value.
My class inherits from monobehaviour and I am changing an integer property (so as far as I know, I don’t have to worry about serialization).
Is this because I am getting the object through Selection.activeGameObject?
Does changing a static object makes any difference?
Here is a glimpse of the code:
Class:
public class Troop : MonoBehaviour
{
public int AreaWidth;
public int AreaHeight;
}
Custom Editor:
public class RPGInspectorUI : EditorWindow {
void OnGUI()
{
if (MapEditor.selectedObject != null)
{
var troop = Selection.activeGameObject.GetComponent<Troop>();
if (troop != null)
{
GUILayout.Label("Area:", EditorStyles.boldLabel);
troop.AreaWidth = EditorGUILayout.IntField("Width:", troop.AreaWidth);
troop.AreaHeight = EditorGUILayout.IntField("Height:", troop.AreaHeight);
}
}
}
One last thing… If I change the values through Unity’s inspector it works after I hit Play.