public override void OnInspectorGUI() { base.OnInspectorGUI(); GenericVariable cmp = (GenericVariable)target; //Draw value field Type baseType = GenericVariable.GetBaseType(cmp); if (baseType == typeof(float)) { cmp.Value = EditorGUILayout.FloatField(valueFieldName, (float)cmp.Value); } else if (baseType == typeof(int)) { cmp.Value = EditorGUILayout.IntField(valueFieldName, (int)cmp.Value); } else if (baseType == typeof(string)) { cmp.Value = EditorGUILayout.TextField(valueFieldName, (string)cmp.Value); } else if (baseType == typeof(bool)) { cmp.Value = EditorGUILayout.Toggle(valueFieldName, (bool)cmp.Value); } else { GUI.enabled = false; EditorGUILayout.LabelField(valueFieldName, valueComplex); GUI.enabled = true; } GUI.enabled = false; EditorGUILayout.Toggle(valueHasChangedLabel, cmp.HasChanged); try { EditorGUILayout.LabelField(assetVersionLabel, cmp.Version); } catch { EditorGUILayout.LabelField(assetVersionLabel, "--"); } GUI.enabled = true; if (Globals.VersionNum > new Version(cmp.Version)) { if (GUILayout.Button(string.Format("Upgrade Asset Version ({0} > {1})" , cmp.Version , Globals.Version)) ) { if (cmp.UpgradeAsset()) { EditorUtility.SetDirty(target); } } } }
public static Type GetBaseType(GenericVariable obj) { if (obj.GetType().Equals(typeof(FloatVariable))) { return(typeof(float)); } else if (obj.GetType().Equals(typeof(IntVariable))) { return(typeof(int)); } else if (obj.GetType().Equals(typeof(StringVariable))) { return(typeof(string)); } else if (obj.GetType().Equals(typeof(BoolVariable))) { return(typeof(bool)); } else { return(null); } }
public static GenericVariable GetAsType <T>(T baseType, GenericVariable obj) where T : Type { if (baseType == typeof(float)) { return((GenericVariable <float>)obj); } else if (baseType == typeof(int)) { return((GenericVariable <int>)obj); } else if (baseType == typeof(string)) { return((GenericVariable <string>)obj); } else if (baseType == typeof(bool)) { return((GenericVariable <bool>)obj); } else { return(null); } }