public override object OnGUI(params GUILayoutOption[] options) { if (!type.IsClass) { EditorGUILayout.LabelField("not class type"); return(instance); } if (instance == null) { //try set defalut instance = TypeHelper.DefaultValue(type); } if (instance == null) { EditorGUILayout.LabelField(type + "cant serialize"); return(instance); } if (OnGUIUtility.EditorPrefsFoldoutGroup(this.Title)) { OnGUIUtility.Layout.IndentBegin(); List <FieldInfo> fields = new List <FieldInfo>(); fields.AddRange(type.GetPublicFields()); fields.AddRange(type.GetPrivateFields(typeof(SerializeField))); foreach (var field in fields) { object value = field.GetValue(instance); var fieldValue = FieldDrawerUtil.ObjectField(field.Name, value, field.FieldType, field, this, options); field.SetValue(instance, fieldValue); } OnGUIUtility.Layout.IndentEnd(); } return(instance); }
public override void SetupUIElements() { if (DefaultLayout) { var editorContent = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(PathTools.RelativeAssetPath(typeof(CodeGenerator), "../CodeGenerator.uxml")); editorContent_styles = AssetDatabase.LoadAssetAtPath <StyleSheet>(PathTools.RelativeAssetPath(typeof(CodeGenerator), "../CodeGenerator.uss")); window.EditorContent.styleSheets.Add(editorContent_styles); editorContent.CloneTree(window.EditorContent); //SetupElements var SaveDirGUI = this.EditorContent_Elements.Q <IMGUIContainer>("savedir-view"); SaveDirGUI.onGUIHandler = () => { Dir = OnGUIUtility.SaveFolderPanel("SaveDirectory"); }; var LegcyGUI = this.EditorContent_Elements.Q <IMGUIContainer>("GUIContainer"); LegcyGUI.onGUIHandler = OnGUI; var genrateButton = this.EditorContent_Elements.Q <Button>("btn-generate"); genrateButton.clickable.clicked += OnGenerate; Preview = this.EditorContent_Elements.Q <TextField>("Preview-text"); foreach (var template in templates) { InitTemplate(template); } } else { base.SetupUIElements(); } }
public override object OnGUI(params GUILayoutOption[] options) { EditorGUILayout.BeginVertical(); if (OnGUIUtility.EditorPrefsFoldoutGroup(Title)) { OnGUIUtility.Layout.IndentBegin(); Type dataType = instance.GetType().GetElementType(); Array a = (Array)instance; int count = EditorGUILayout.IntField("Size", a.Length); count = Mathf.Max(0, count); if (count > a.Length) { int offset = count - a.Length; Array temp = Array.CreateInstance(dataType, count); a.CopyTo(temp, 0); for (int i = a.Length; i < a.Length + offset; i++) { temp.SetValue(TypeHelper.DefaultValue(dataType), i); } instance = temp; } else if (count < a.Length) { Array temp = Array.CreateInstance(dataType, count); for (int i = 0; i < count; i++) { temp.SetValue(a.GetValue(i), i); } instance = temp; } a = (Array)instance; for (int i = 0; i < a.Length; i++) { object data = a.GetValue(i); a.SetValue(FieldDrawerUtil.ObjectField(i.ToString(), data, dataType, this.fieldInfo, this), i); //a.SetValue(FieldDrawerUtil.ValueField(i.ToString(), data, dataType), i); } OnGUIUtility.Layout.IndentEnd(); } EditorGUILayout.EndVertical(); return(instance); }
public override void OnGUI() { base.OnGUI(); GUILayout.BeginHorizontal(); { GUILayout.BeginVertical(); { GUILayout.Label("定时器,定时10秒,每0.5秒一次回调"); GUILayout.Label(count.ToString()); if (GUILayout.Button("Start")) { EditorCoroutine.Start(Timer()); } } GUILayout.EndVertical(); GUILayout.BeginVertical(); { GUILayout.Label("等待 定时器 >5"); if (GUILayout.Button("Start")) { EditorCoroutine.Start(waitCounting()); } GUILayout.Label(!countend ? "等待中.." : "✓"); } GUILayout.EndVertical(); GUILayout.BeginVertical(); { GUILayout.Label("等1帧"); if (GUILayout.Button("Start")) { EditorCoroutine.Start(waitForNextFrame()); } } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); if (GUILayout.Button("整合两个携程的序列")) { EditorCoroutine.Start(sequnce()); } OnGUIUtility.ScriptField("Script", this.GetType()); }
public override void OnInspectorGUI() { ActionBase action = target as ActionBase; GUI.backgroundColor = action.ActionColor; if (string.IsNullOrEmpty(action.ActionName)) { action.ActionName = action.GetType().FullName; } GUILayout.Box(action.ActionName, ActionStyle, GUILayout.ExpandWidth(true)); GUI.backgroundColor = Color.white; string verify = action.Verify(); if (verify != string.Empty) { EditorGUILayout.HelpBox(verify, MessageType.Error); } if (OnGUIUtility.OpenClose("EditAction", target)) { base.OnInspectorGUI(); } }
public override object OnGUI(params GUILayoutOption[] options) { EditorGUILayout.BeginVertical(); if (OnGUIUtility.EditorPrefsFoldoutGroup(Title)) { OnGUIUtility.Layout.IndentBegin(); Type dataType = instance.GetType().GetGenericArguments()[0]; IList list = (IList)instance; int count = EditorGUILayout.IntField("Size", list.Count); count = Mathf.Max(0, count); if (count > list.Count) { int offset = count - list.Count; for (int i = 0; i < offset; i++) { list.Add(TypeHelper.DefaultValue(dataType)); } } else if (count < list.Count) { for (int i = list.Count - 1; i >= count; i--) { list.RemoveAt(i); } } for (int i = 0; i < list.Count; i++) { object data = list[i]; list[i] = FieldDrawerUtil.ObjectField(i.ToString(), data, dataType, this.fieldInfo, this); } OnGUIUtility.Layout.IndentEnd(); } EditorGUILayout.EndVertical(); return(instance); }