예제 #1
0
    /// <summary>
    /// 部件信息
    /// </summary>
    private void UnitBox()
    {
        EditorGUILayout.BeginHorizontal();
        //左
        EditorGUILayout.BeginVertical(GUILayout.Width(position.width * 0.6f), GUILayout.Height(250));
        {
            GUILayout.Space(5);
            GUILayout.Label("属性编辑", title3LabelStyle);
            GUILayout.Space(10);
            unitName = GUITools.TextField("部件名称", 30, 30, unitName);
            GUILayout.Space(5);
            unitColor = GUITools.ColorField("颜色变化", 30, 30, unitColor);
            GUILayout.Space(5);
            unitContent = GUITools.TextField("文字说明", 30, 30, unitContent);
            GUILayout.Space(5);
            unitLoadtexture2D = GUITools.ObjectField <Texture2D>("图片说明", 30, 30, unitLoadtexture2D, typeof(Texture2D), true);
            GUILayout.Space(5);
            GUILayout.BeginHorizontal();
            {
                GUILayout.Space(30);
                EditorGUILayout.PrefixLabel("观察点");
                EditorGUI.BeginDisabledGroup(unitObservePointCount == 5);
                if (GUILayout.Button("添加观察点"))
                {
                    unitObservePointCount++;
                    GUI.FocusControl("");
                }
                EditorGUI.EndDisabledGroup();
                GUILayout.Space(30);
            }
            GUILayout.EndHorizontal();
            GUILayout.Space(5);
            if (unitObservePointCount < 0)
            {
                unitObservePointCount = 0;
            }
            if (unitObservePointCount > 5)
            {
                unitObservePointCount = 5;
            }

            observePointPositionList = GUITools.ObservePointListPanel(observePointPositionList, observePointRotationList, unitObservePointCount);
            unitObservePointCount    = observePointPositionList.Count;
            GUILayout.Space(5);
            bool old_groupOperation = groupOperation;
            groupOperation = GUITools.Toggle("添加操作信息", 30, 30, groupOperation);
            CheckOperationBool(old_groupOperation, groupOperation);
            GUILayout.Space(5);

            if (groupOperation)
            {
                isLockGameObjects = true;
                int old = operationToolbarOption;
                operationToolbarOption = GUITools.Toolbar(30, 30, operationToolbarOption,
                                                          operationToolbarTexts);

                //改变选择
                if (old != operationToolbarOption)
                {
                    GUI.FocusControl("");
                    for (int i = 0; i < currentGameObjects.Length; i++)
                    {
                        currentGameObjects[i].transform.localPosition = position_original[i];
                        currentGameObjects[i].transform.localRotation = rotation_original[i];
                    }
                }

                switch (operationToolbarOption)
                {
                case 0:     //旋转
                    ChooseRotate();
                    break;

                case 1:     //按压
                    ChoosePress();
                    break;

                case 2:     //旋转并按压
                    ChooseRotateAndPress();
                    break;
                }
                GUILayout.Space(5);
            }
            else
            {
                GUILayout.Space(145);
            }
            //unitBtnsDisable[2] = !UnitManagerWindowT1.Instance;
            bool[] b = GUITools.HorizontalButtons(30, 30, unitBtnsText, 10, unitBtnsDisable);
            GUILayout.Space(10);
            if (b[0])
            {
                OnAddUnitButtonClick();
            }
            if (b[1])
            {
                OnUpdateUnitButtonClick();
            }
        }
        EditorGUILayout.EndVertical();
        //右
        EditorGUILayout.BeginVertical(GUILayout.Width(position.width * 0.4f - 25), GUILayout.Height(355));
        {
            UnitManagerWindowT1.Instance.OnGUI();
        }
        EditorGUILayout.EndVertical();
        EditorGUILayout.EndHorizontal();
    }
예제 #2
0
    static float DrawFieldSubData(float x, float y, float w, float h, string fiName, ref object data, float labelSize, bool check = true)
    {
        float hSize = h;

        Rect   rt = new Rect(x, y, w, h);
        string name;

        string typeName = data.GetType().ToString().Replace("UnityEngine.", "");

        if (data is int)
        {
            int value = (int)data;
            name  = "(int) " + fiName;
            value = GUITools.IntField(rt, name, value, labelSize);
            data  = value;
        }
        else if (data is float)
        {
            float value = (float)data;
            name  = "(float) " + fiName;
            value = GUITools.FloatField(rt, name, value, labelSize);
            data  = value;
        }
        else if (data is long)
        {
            long value = (long)data;
            name  = "(long) " + fiName;
            value = GUITools.LongField(rt, name, value, labelSize);
            data  = value;
        }
        else if (data is double)
        {
            double value = (double)data;
            name  = "(double) " + fiName;
            value = GUITools.DoubleField(rt, name, value, labelSize);
            data  = value;
        }
        else if (data is string)
        {
            string value = data as string;
            name  = "(string) " + fiName;
            value = GUITools.TextField(rt, name, value, labelSize);
            data  = value;
        }
        else if (data is bool)
        {
            bool value = (bool)data;
            name = "(bool) " + fiName;

            Rect rtSub = new Rect(rt.x, rt.y + 6, labelSize, rt.height - 6);
            GUITools.LabelField(rtSub, name);
            rtSub.x    += rtSub.width;
            rtSub.width = rt.width - (rtSub.x - rt.x);
            value       = EditorGUI.ToggleLeft(rtSub, "", value);
            data        = value;
        }
        else if (data is System.Enum)
        {
            object value = data;
            name  = "(" + data.GetType() + ") " + fiName;
            value = GUITools.EnumPopup(rt, name, (System.Enum)value, labelSize);
            data  = value;
        }
        else if (data is AnimationCurve)
        {
            AnimationCurve value = data as AnimationCurve;
            name  = "(" + typeName + ") " + fiName;
            value = GUITools.CurveField(rt, name, value, labelSize);
            data  = value;
        }
        else if (data is Color)
        {
            Color value = (Color)data;
            name  = "(" + typeName + ") " + fiName;
            value = GUITools.ColorField(rt, name, value, labelSize);
            data  = value;
        }
        else if (data is System.DateTime)
        {
            System.DateTime value = (System.DateTime)data;
            int             year = value.Year, month = value.Month, day = value.Day, hour = value.Hour, minute = value.Minute, second = value.Second, millisecond = value.Millisecond;
            int             dummy, flush = 0;
            Rect            rtSub = rt;

            name = "(System.DateTime)" + fiName;

            rtSub.width = 300;
            dummy       = year;
            year        = GUITools.IntField(rtSub, name, year, labelSize);
            if (year != dummy)
            {
                flush = 1;
            }
            rtSub.x += rtSub.width;

            rtSub.width = 10;
            GUITools.LabelField(rtSub, "/");
            rtSub.x += rtSub.width;

            rtSub.width = 30;
            dummy       = month;
            month       = GUITools.IntField(rtSub, "월", month, 0);
            if (month != dummy)
            {
                flush = 1;
            }
            rtSub.x += rtSub.width;

            rtSub.width = 10;
            GUITools.LabelField(rtSub, "/");
            rtSub.x += rtSub.width;

            rtSub.width = 30;
            dummy       = day;
            day         = GUITools.IntField(rtSub, "일", day, 0);
            if (day != dummy)
            {
                flush = 1;
            }
            rtSub.x += rtSub.width;

            rtSub.width = 30;
            GUITools.LabelField(rtSub, "-", TextAnchor.MiddleCenter);
            rtSub.x += rtSub.width;

            rtSub.width = 30;
            dummy       = hour;
            hour        = GUITools.IntField(rtSub, "시", hour, 0);
            if (hour != dummy)
            {
                flush = 1;
            }
            rtSub.x += rtSub.width;

            rtSub.width = 10;
            GUITools.LabelField(rtSub, ":");
            rtSub.x += rtSub.width;

            rtSub.width = 30;
            dummy       = minute;
            minute      = GUITools.IntField(rtSub, "분", minute, 0);
            if (minute != dummy)
            {
                flush = 1;
            }
            rtSub.x += rtSub.width;

            rtSub.width = 10;
            GUITools.LabelField(rtSub, ":");
            rtSub.x += rtSub.width;

            rtSub.width = 30;
            dummy       = second;
            second      = GUITools.IntField(rtSub, "초", second, 0);
            if (second != dummy)
            {
                flush = 1;
            }
            rtSub.x += rtSub.width;

            rtSub.width = 10;
            GUITools.LabelField(rtSub, ":");
            rtSub.x += rtSub.width;

            rtSub.width = 30;
            dummy       = millisecond;
            millisecond = GUITools.IntField(rtSub, "초2", millisecond, 0);
            if (millisecond != dummy)
            {
                flush = 1;
            }
            rtSub.x += rtSub.width;

            if (flush == 1)
            {
                value = new System.DateTime(year, month, day, hour, minute, second, millisecond);
            }
            data = value;
        }
        else
        {
            if (check == true)
            {
                name = "(" + typeName + ")" + fiName;
                GUITools.LabelField(rt, name);
            }
        }

        return(hSize);
    }