private void Initialize() { DirY[] values = DirY.GetList(); optionLabels = values.Select(dir => dir.identifier).ToArray(); optionValues = values.Select((_, i) => i).ToArray(); initialized = true; }
public static void Initialize(KiteSettings settings = null) { if (!settings) { settings = KiteSettingsEditor.GetOrCreateSettings(); } SerializedObject serializedObject = KiteSettingsEditor.GetSerializedSettings(); serializedObject.FindProperty(nameof(settings.upDirY)).objectReferenceValue = InitUpDirY(); serializedObject.FindProperty(nameof(settings.downDirY)).objectReferenceValue = InitDownDirY(); serializedObject.ApplyModifiedProperties(); DirY.OnSettings(settings); }
private static DirY InitUpDirY() { string assetPath = $"{KiteSettingsEditor.path}/DirYUp.asset"; DirY upDirY = AssetDatabase.LoadAssetAtPath <DirY>(assetPath); if (!upDirY) { upDirY = ScriptableObject.CreateInstance <DirY>(); upDirY.identifier = "Up"; upDirY.value = 1; AssetDatabase.CreateAsset(upDirY, assetPath); } return(upDirY); }
private static DirY InitDownDirY() { string assetPath = $"{KiteSettingsEditor.path}/DirYDown.asset"; DirY downDirY = AssetDatabase.LoadAssetAtPath <DirY>(assetPath); if (!downDirY) { downDirY = ScriptableObject.CreateInstance <DirY>(); downDirY.identifier = "Down"; downDirY.value = -1; AssetDatabase.CreateAsset(downDirY, assetPath); } return(downDirY); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { bool isSettings = property.serializedObject.targetObject is KiteSettings; if (isSettings) { EditorGUI.PropertyField(position, property, label); return; } if (!DirYSettings.IsInitialized()) { DirYSettings.Initialize(); } if (!initialized) { Initialize(); } Rect valuePosition = EditorGUI.PrefixLabel(position, new GUIContent(property.displayName)); DirY[] values = DirY.GetList(); DirY value = property.objectReferenceValue as DirY; if (value != null) { int currentIndex = Array.IndexOf(values, value); if (currentIndex != -1) { EditorGUI.BeginChangeCheck(); int selectedIndex = EditorGUI.IntPopup(valuePosition, currentIndex, optionLabels, optionValues); if (EditorGUI.EndChangeCheck()) { property.objectReferenceValue = values[selectedIndex]; } return; } } property.objectReferenceValue = values[0]; }