Esempio n. 1
0
 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);
 }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
 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();
        }
    }
Esempio n. 6
0
    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);
    }