Quantcast
Channel: Questions in topic: "issue"
Viewing all articles
Browse latest Browse all 827

Custom Editor Inspector member class with inheritance, values resets after starting Play Mode

$
0
0
Hello, let's say I have following classes:
[System.Serializable]
public class A {
    public float a;
}[System.Serializable]
public class B : A {
    public float b;
}[System.Serializable]
public class C : A {
    public float c;
}
, Manager class which has class A as member:
using UnityEngine;
public class Manager : MonoBehaviour {
    public enum Mode { B, C };
    public Mode mode = Mode.B;
    [SerializeField]
    public A classA;
}
and custom inspector for Manager class: using UnityEngine; using UnityEditor; [CustomEditor(typeof(Manager))] public class ManagerEditor : Editor { private string[] tabNames = { "B", "C" }; Manager myTarget; private void setClass() { if(myTarget.mode == Manager.Mode.B) { if (myTarget.classA.GetType() != typeof(B)) { myTarget.classA = new B(); } displayB(); } else if (myTarget.mode == Manager.Mode.C) { if(myTarget.classA.GetType() != typeof(C)) { myTarget.classA = new C(); } displayC(); } } private void displayC() { myTarget.classA.a = EditorGUILayout.FloatField("a", myTarget.classA.a); (myTarget.classA as C).c = EditorGUILayout.FloatField("c", (myTarget.classA as C).c); } private void displayB() { myTarget.classA.a = EditorGUILayout.FloatField("a", myTarget.classA.a); (myTarget.classA as B).b = EditorGUILayout.FloatField("b", (myTarget.classA as B).b); } public override void OnInspectorGUI() { myTarget = target as Manager; myTarget.mode = (Manager.Mode)GUILayout.Toolbar((int)myTarget.mode, tabNames); setClass(); } } Everything seams to be fine, but when I set some values in inspector in edit mode, for example mode C, and a = 1, c = 2: ![alt text][1] as soon as I press Play, every value resets: ![alt text][2] Is there any way to prevent that and keep values from edit mode in play mode or I am doing something wrong? [1]: /storage/temp/130629-editmode.png [2]: /storage/temp/130630-playmode.png

Viewing all articles
Browse latest Browse all 827

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>