/// <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(); }
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); }