/// <summary> /// The Custom Inspector you will see in a custom location /// in which this static function is called. /// (IE: In MultiObjectWindow.cs) /// </summary> /// <param name="obj">GameObject with the script Enemy attached</param> public static void OnCustomInspectorGUI(GameObject obj) { Enemy e = obj.GetComponent <Enemy>(); // Produce error or e = null ? if (e == null) { CustomAPI.ErrorGUI(obj, typeof(Enemy)); } else { EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); addCVX(e); e.maxHP = (int)EditorGUILayout.Knob(new Vector2(25, 25), (float)e.maxHP, minMaxHP, maxMaxHP, "maxHP", Color.white, Color.cyan, true, GUILayout.MaxWidth(75)); if (e.currentHP > e.maxHP) { e.currentHP = e.maxHP; } e.currentHP = (int)EditorGUILayout.Knob(new Vector2(25, 25), (float)e.currentHP, 0, e.maxHP, "curHP", Color.white, Color.cyan, true, GUILayout.MaxWidth(75)); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); } }
public override void OnInspectorGUI() { ThrustEngine currentScript = (ThrustEngine)target; currentScript.enabled = EditorGUILayout.Toggle("Enabled", currentScript.enabled); currentScript.boundObject = (Rigidbody)EditorGUILayout.ObjectField("Bound Body", currentScript.boundObject, typeof(Rigidbody), true); if (currentScript.boundObject == null && currentScript.GetComponent <Rigidbody> () == null) { EditorGUILayout.HelpBox("Thruster will be disabled at runtime. \n\nThruster does not have a rigidbody to target. \n\nPlease link a bound body (parent) or add a rigidbody directly to the thruster.", MessageType.Warning); } else if (currentScript.boundObject == null && currentScript.GetComponent <Rigidbody> () != null) { EditorGUILayout.HelpBox("Using rigidbody attached directly to thruster, no bound body (parent) attached.", MessageType.Info); } currentScript.maxPower = EditorGUILayout.FloatField("Max Power", currentScript.maxPower); EditorGUILayout.LabelField("Current Power (" + (currentScript.currentPowerPercentage * 100) + "%)"); currentScript.currentPowerPercentage = EditorGUILayout.Knob(new Vector2(40, 40), currentScript.currentPowerPercentage, 0.0f, 1.0f, "", Color.gray, Color.cyan, true); currentScript.hoverMode = EditorGUILayout.Toggle("Enable Hover Mode", currentScript.hoverMode); if (currentScript.hoverMode) { EditorGUILayout.HelpBox("Hover mode will dynamically manage thrust to allow object to hover a predefined distance from ground.", MessageType.Info); currentScript.hoverDistance = EditorGUILayout.FloatField("Hover Distance", currentScript.hoverDistance); currentScript.hoverSafeRange = EditorGUILayout.FloatField("Hover Safe Range", currentScript.hoverSafeRange); } }
void DisplayKnob() { EditorGUILayout.BeginVertical(); EditorGUI.indentLevel--; EditorGUILayout.LabelField("Knob"); EditorGUI.indentLevel++; angle = EditorGUILayout.Knob(Vector2.one * 64, angle, 0f, 360f, "degree", Color.grey, Color.green, true); EditorGUILayout.EndVertical(); }
protected override void OnDraw() { float value = EditorGUILayout.Knob(KnobSize, Value, MinValue, MaxValue, Unit, BackgroundColor, ActiveColor, ShowValue, Option.Values); if (value != Value) { Value = value; this.DipatchEvent(); } }
void OnGUI() { if (Event.current.type == EventType.ContextClick) { GenericMenu genericMenu = new GenericMenu(); genericMenu.AddItem(new GUIContent("Create Cube"), false, () => GameObject.CreatePrimitive(PrimitiveType.Cube)); genericMenu.ShowAsContext(); } angle = EditorGUILayout.Knob(Vector2.one * 64, angle, 0, 360, "度", Color.gray, Color.red, true); selected = GUILayout.Toolbar(selected, new string[] { "1", "2", "3" }); }
void Bar() { EditorGUILayout.BeginVertical(GUI.skin.box); EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); m_fHScrollBar = GUILayout.HorizontalScrollbar(m_fHScrollBar, 0.2f, 0, 1); m_fVScrollBar = GUILayout.VerticalScrollbar(m_fVScrollBar, 0.2f, 0, 1); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); m_fHSlider = GUILayout.HorizontalSlider(m_fHSlider, 0, 1); m_fVSlider = GUILayout.VerticalSlider(m_fVSlider, 0, 1, GUILayout.Height(20)); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); m_fFloatSlider = EditorGUILayout.Slider("Slider", m_fFloatSlider, 0, 100); m_iIntSlider = EditorGUILayout.IntSlider("IntSlider", m_iIntSlider, 0, 10); EditorGUILayout.MinMaxSlider("MinMaxSlider", ref m_fSliderMinValue, ref m_fSliderMaxValue, m_fSliderMin, m_fSliderMax); m_fKnob = EditorGUILayout.Knob(Vector2.one * 100, m_fKnob, 0, 1, "Knob", Color.black, Color.red, true); EditorGUILayout.EndVertical(); }
protected override void OnGUI() { base.OnGUI(); pos = EditorGUILayout.BeginScrollView(pos); if (GUILayout.Button("这是一个按钮")) { Debug.Log("Click Button"); } EditorGUILayout.LabelField("空格"); EditorGUILayout.Separator(); EditorGUILayout.Space(); EditorGUILayout.LabelField("这是一个默认Lable"); EditorGUILayout.LabelField("这是高300,宽50的Label", GUILayout.Width(300), GUILayout.Height(50)); EditorGUILayout.LabelField("这是一个拾色器"); EditorGUILayout.ColorField(Color.white); EditorGUILayout.LabelField("Bounds"); bounds = EditorGUILayout.BoundsField(bounds); EditorGUILayout.LabelField("BoundsInt"); boundsInt = EditorGUILayout.BoundsIntField(boundsInt); EditorGUILayout.LabelField("AnimationCurve"); curve = EditorGUILayout.CurveField(curve); EditorGUILayout.LabelField("<color=#ff0000>注意比对延迟设置和直接设置的区别</color>", Style); EditorGUILayout.Space(); toggle = EditorGUILayout.Toggle("Toggle", toggle); toggleLeft = EditorGUILayout.ToggleLeft("ToggleLeft", toggleLeft); //double EditorGUILayout.LabelField("延迟设置" + delayedDou.ToString()); delayedDou = EditorGUILayout.DelayedDoubleField("DelayedDouble", delayedDou); EditorGUILayout.LabelField("直接设置" + dou.ToString()); dou = EditorGUILayout.DoubleField("Double", dou); delayedInt = EditorGUILayout.DelayedIntField("DelayedInt", delayedInt); //int i = EditorGUILayout.IntField("Int", i); sliderInt = EditorGUILayout.IntSlider(sliderInt, 0, 100); //text delayedText = EditorGUILayout.DelayedTextField("DelayedText", delayedText); text = EditorGUILayout.TextField("Text", text); password = EditorGUILayout.PasswordField("Password", password); EditorGUILayout.LabelField("TextArea"); textArea = EditorGUILayout.TextArea(textArea); //float delayedFloat = EditorGUILayout.DelayedFloatField("DelayedFloat", delayedFloat); f = EditorGUILayout.FloatField("Float", f); fSlider = EditorGUILayout.Slider("FloatSlider", fSlider, 0, 10); fKnob = EditorGUILayout.Knob(new Vector2(100, 100), fKnob, 0, 10, "Knob", Color.blue, Color.red, true); longvalue = EditorGUILayout.LongField("Long", longvalue); //vector v2 = EditorGUILayout.Vector2Field("Vector2", v2); v2Int = EditorGUILayout.Vector2IntField("Vector2Int", v2Int); v3 = EditorGUILayout.Vector3Field("Vector3", v3); v3Int = EditorGUILayout.Vector3IntField("Vector3Int", v3Int); v4 = EditorGUILayout.Vector4Field("Vector4", v4); EditorGUILayout.LabelField("枚举Field"); m_Flags = (ExampleFlagsEnum)EditorGUILayout.EnumFlagsField(m_Flags); EditorGUILayout.LabelField("注意两者的区别"); m_Flags = (ExampleFlagsEnum)EditorGUILayout.EnumPopup(m_Flags); gradient = EditorGUILayout.GradientField("Gradient", gradient); go = (GameObject)EditorGUILayout.ObjectField("GameObject", go, typeof(GameObject), true); clip = (AnimationClip)EditorGUILayout.ObjectField("Clip", clip, typeof(AnimationClip), true); EditorGUILayout.LabelField("Rect"); rect = EditorGUILayout.RectField(rect); EditorGUILayout.LabelField("RectInt"); rectInt = EditorGUILayout.RectIntField(rectInt); EditorGUILayout.HelpBox("这是一个信息Box", MessageType.Info); EditorGUILayout.HelpBox("这是一个警告Box", MessageType.Warning); EditorGUILayout.HelpBox("这是一个错误Box", MessageType.Error); EditorGUILayout.SelectableLabel("SelectableLabel"); EditorGUILayout.EndScrollView(); }
public override void OnInspectorGUI() { //base.OnInspectorGUI(); ad = FindObjectsOfType <ApplyDamage>(); if (EditorApplication.isPlaying) { GUIStyle gs = new GUIStyle(EditorStyles.label); gs.alignment = TextAnchor.MiddleCenter; gs.normal.textColor = Color.yellow; GUILayout.Label("Exit play mode to modify settings!", gs); } else { title = new GUIStyle(EditorStyles.whiteLargeLabel); title.fontStyle = FontStyle.Bold; initialHealth = EditorPrefs.GetInt("ih"); EditorGUILayout.LabelField("Player options", title); healthbar.playerTag = EditorGUILayout.TagField("Player's tag", healthbar.playerTag); GameObject locator = GameObject.FindGameObjectWithTag(healthbar.playerTag); if (locator) { EditorGUILayout.LabelField("Player assigned to: " + locator.gameObject.name); if (GUILayout.Button("Select Player Gameobject")) { Selection.activeGameObject = locator; } } else { GUIStyle s = new GUIStyle(EditorStyles.whiteLargeLabel); s.normal.textColor = Color.red; s.alignment = TextAnchor.MiddleCenter; s.fontStyle = FontStyle.Bold; EditorGUILayout.LabelField("Player not found!", s); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Healthbar Behavior", title); initialHealth = EditorGUILayout.IntSlider("Player's health", initialHealth, 1, 100); EditorPrefs.SetInt("ih", initialHealth); healthbar.displayYellowBar = EditorGUILayout.IntSlider("Turn yellow at", healthbar.displayYellowBar, 1, 100); healthbar.displayRedBar = EditorGUILayout.IntSlider("Display red at", healthbar.displayRedBar, 1, 100); healthbar.chosenTheme = (Theme)EditorGUILayout.EnumPopup("Chosen theme", healthbar.chosenTheme); healthbar.positioning = (Healthbar.Positioning)EditorGUILayout.EnumPopup("Positioning", healthbar.positioning); EditorGUILayout.Space(); healthbar.showHealthValue = EditorGUILayout.Toggle("Show Text", healthbar.showHealthValue); if (healthbar.showHealthValue) { EditorGUILayout.LabelField("Font properties", title); healthbar.fontSize = EditorGUILayout.IntSlider("Font size", healthbar.fontSize, 5, 25); healthbar.chosenFont = (FontNames)EditorGUILayout.EnumPopup("Font type", healthbar.chosenFont); healthbar.displayCritical = EditorGUILayout.IntSlider("Display critical at", healthbar.displayCritical, 1, 60); healthbar.healthMessage = EditorGUILayout.TextField("Health message", healthbar.healthMessage); healthbar.showCritical = EditorGUILayout.Toggle("Show Critical message", healthbar.showCritical); if (healthbar.showCritical) { healthbar.criticalMessage = EditorGUILayout.TextField("Critical message", healthbar.criticalMessage); } } if (GUI.changed) { healthbar.health = initialHealth * 10; EditorUtility.SetDirty(healthbar); } EditorGUILayout.Knob(new Vector2(70, 70), healthbar.health / 10, 1, 100, "Player's health", Color.red, Color.green, true); GUIStyle info = new GUIStyle(EditorStyles.label); info.normal.textColor = Color.green; //obj = (GameObject) EditorGUILayout.ObjectField("Find Dependency", obj, typeof(GameObject)); //obj = (ApplyDamage) EditorGUILayout.ObjectField("Examine class", obj, typeof(ApplyDamage), true); advanced = EditorPrefs.GetBool("advanced"); advanced = EditorGUILayout.Toggle("Advanced options", advanced); EditorPrefs.SetBool("advanced", advanced); if (advanced) { EditorGUILayout.LabelField("ApplyDamage classes present: " + ad.Length, EditorStyles.miniLabel); for (int i = 0; i < ad.Length; i++) { if (GUILayout.Button("Select " + i + " is " + ad[i].transform.name)) { Selection.activeGameObject = ad[i].gameObject; } } } } }
private void DrawMixer(Dictionary <string, AudioEntry> data) { EditorGUILayout.BeginHorizontal("box", GUILayout.Width(400), GUILayout.Height(25)); EditorGUILayout.LabelField(new GUIContent("Filter:"), GUILayout.Width(35)); filterString = EditorGUILayout.TextField(filterString, GUILayout.Width(90)); EditorGUILayout.LabelField(new GUIContent("Audio Type:"), GUILayout.Width(85)); filterAudioType = (AudioDataManagerEditor.FilterAudioType)EditorGUILayout.EnumPopup(filterAudioType, GUILayout.Width(40)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginVertical("ShurikenEffectBg"); mainScroll = EditorGUILayout.BeginScrollView(mainScroll); EditorGUILayout.BeginHorizontal(); foreach (KeyValuePair <string, AudioEntry> kvp in data) { EditorGUILayout.BeginVertical("ChannelStripBg", GUILayout.Width(85)); EditorGUILayout.SelectableLabel(kvp.Key, GUILayout.Width(80)); EditorGUILayout.LabelField(ConvertToDb(kvp.Value.inherentVolume).ToString("F") + " dB", GUILayout.Width(75)); EditorGUILayout.BeginHorizontal("ShurikenEffectBg", GUILayout.Height(310)); EditorGUILayout.BeginHorizontal("box"); System.Text.StringBuilder sb = new System.Text.StringBuilder(); char[] nameChArray = kvp.Key.ToCharArray(); for (int charIndex = 0; charIndex < nameChArray.Length; charIndex++) { sb.Append(nameChArray[charIndex]).Append('\n'); } EditorGUILayout.LabelField(sb.ToString(), GUILayout.Width(15), GUILayout.Height(290)); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal("ShurikenEffectBg", GUILayout.Height(300)); EditorGUILayout.Space(); EditorGUILayout.BeginVertical(); Color oldcolor = GUI.color; GUI.color = Color.yellow; kvp.Value.inherentVolume = ConvertFromDb(GUILayout.VerticalSlider(ConvertToDb(kvp.Value.inherentVolume), 0f, -25.0f, GUILayout.Width(10), GUILayout.Height(285))); GUI.color = oldcolor; EditorGUILayout.Space(); EditorGUILayout.EndVertical(); EditorGUILayout.Space(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical("box"); EditorGUILayout.LabelField(new GUIContent("Pan"), GUILayout.Width(25)); EditorGUILayout.Knob(new Vector2(25, 25), 0.0f, -1.0f, 1.0f, "", Color.black, Color.yellow, true); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); Color oldCol = GUI.color; if (holdList != null && holdList.Contains(kvp.Key)) { GUI.color = Color.yellow; } if (GUILayout.Button("Hold")) { if (holdList == null) { holdList = new List <string>(); } if (holdList.Contains(kvp.Key)) { holdList.Remove(kvp.Key); } else { holdList.Add(kvp.Key); } } GUI.color = oldCol; EditorGUILayout.EndVertical(); EditorGUILayout.Separator(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical(); }
public override void OnInspectorGUI() { //设置整个界面是以垂直方向来布局 EditorGUILayout.BeginVertical(); //Button if (GUILayout.Button("Button")) { Debug.Log("Button Click"); } //RepeatButton 在按着的时候一直返回true,松开才返回false if (GUILayout.RepeatButton("RepeatButton")) { Debug.Log("RepeatButton Down"); } //LabelField EditorGUILayout.LabelField("Base Info"); player.id = EditorGUILayout.IntField("Player ID", player.id); //SelectableLabel EditorGUILayout.SelectableLabel("SelectableLabel8\nSelectableLabel7\nSelectableLabel6\nSelectableLabel5\nSelectableLabel4\nSelectableLabel3\nSelectableLabel2\nSelectableLabel1\n"); //密码框 player.password = GUILayout.PasswordField(player.password, '*'); //TextField只能一行 player.playerName = EditorGUILayout.TextField("PlayerName", player.playerName); //TextArea可以多行 EditorGUILayout.LabelField("Back Story"); player.backStory = EditorGUILayout.TextArea(player.backStory, GUILayout.MinHeight(100)); //使用滑块绘制 Player 生命值 player.health = EditorGUILayout.Slider("Health", player.health, 0, 100); //根据生命值设置生命条的背景颜色 if (player.health < 20) { GUI.color = Color.red; } else if (player.health > 80) { GUI.color = Color.green; } else { GUI.color = Color.gray; } //指定生命值的宽高 Rect progressRect = GUILayoutUtility.GetRect(50, 50); //绘制生命条 EditorGUI.ProgressBar(progressRect, player.health / 100.0f, "Health"); //用此处理,以防上面的颜色变化会影响到下面的颜色变化 GUI.color = Color.white; //使用滑块绘制伤害值 player.damage = EditorGUILayout.Slider("Damage", player.damage, 0, 20); //根据伤害值的大小设置显示的类型和提示语 if (player.damage < 10) { EditorGUILayout.HelpBox("伤害太低了吧!!", MessageType.Error); } else if (player.damage > 15) { EditorGUILayout.HelpBox("伤害有点高啊!!", MessageType.Warning); } else { EditorGUILayout.HelpBox("伤害适中!!", MessageType.Info); } //设置内容折叠 showWeapons = EditorGUILayout.Foldout(showWeapons, "Weapons"); if (showWeapons) { player.weaponDamage1 = EditorGUILayout.FloatField("Weapon 1 Damage", player.weaponDamage1); player.weaponDamage2 = EditorGUILayout.FloatField("Weapon 2 Damage", player.weaponDamage2); } //绘制鞋子信息 EditorGUILayout.LabelField("Shoe"); //以水平方向绘制 EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Name", GUILayout.MaxWidth(50)); player.shoeName = EditorGUILayout.TextField(player.shoeName); EditorGUILayout.LabelField("Size", GUILayout.MaxWidth(50)); player.shoeSize = EditorGUILayout.IntField(player.shoeSize); EditorGUILayout.LabelField("Type", GUILayout.MaxWidth(50)); player.shoeType = EditorGUILayout.TextField(player.shoeType); EditorGUILayout.EndHorizontal(); GUILayout.Space(30); //ObjectField player.go = (GameObject)EditorGUILayout.ObjectField("ObjectField:", player.go, typeof(GameObject), true); EditorGUI.indentLevel++; //单选 Enum player.codingType = (CodingType)EditorGUILayout.EnumPopup("单选(枚举Enum)", player.codingType); //多选 Enum player.mixedCodingType = (CodingType)EditorGUILayout.EnumFlagsField("多选(枚举Enum)", player.mixedCodingType); GUILayout.FlexibleSpace(); GUILayout.Space(15); //单选 String player.popup = EditorGUILayout.Popup("单选(字符串)", player.popup, new string[] { "one", "two", "three", "four", "five" }); //多选 String int old = player.mixedPopup; player.mixedPopup = EditorGUILayout.MaskField("多选(字符串)", player.mixedPopup, new string[] { "one", "two", "three", "four", "five" }); if (old != player.mixedPopup) { Print(player.mixedPopup, new string[] { "one", "two", "three", "four", "five" }); } EditorGUI.indentLevel--; //SelectionGrid old = player.gridId; player.gridId = GUILayout.SelectionGrid(player.gridId, new[] { "1", "2", "3", "4", "5", "6" }, 4); if (player.gridId != old) { Debug.Log("SelectionGrid:" + player.gridId); } // Toggle player.isToggle = GUILayout.Toggle(player.isToggle, "Toggle"); player.toggleGroupOpen = EditorGUILayout.BeginToggleGroup("ToggleGroup", player.toggleGroupOpen); EditorGUILayout.LabelField("https://codingriver.github.io"); EditorGUILayout.LabelField("codingriver"); EditorGUILayout.EndToggleGroup(); //knob player.knob = EditorGUILayout.Knob(new Vector2(100, 100), player.knob, 1, 10, "斤", Color.black, Color.blue, true); //用于解决EditorGUILayout和EditorGUI(或者GUI)混着用的情况 //这样确保自动布局不会乱,不会叠在一起 Rect a = EditorGUILayout.GetControlRect(); EditorGUI.LabelField(a, "一个label"); //不知道干嘛的,字面意思是分离 EditorGUILayout.Separator(); EditorGUILayout.Space(); player.fadeGroupValue = EditorGUILayout.Slider("", player.fadeGroupValue, 0, 1); if (EditorGUILayout.BeginFadeGroup(player.fadeGroupValue)) { //...ps:这个应该用于开关的特效,因为Value的值不是0或1时,会让下面所有的控件都无法交互 EditorGUILayout.LabelField("labelField"); EditorGUILayout.PrefixLabel("PrefixLabel"); //点击变蓝的label 可以被选择和复制 EditorGUILayout.SelectableLabel("SelectableLabel"); } EditorGUILayout.EndFadeGroup(); GUILayout.Box(new GUIContent("一个200x200的BOX"), new[] { GUILayout.Height(200), GUILayout.Width(200) }); EditorGUILayout.EndVertical(); }
private void DrawVolumeUI(float volume) { var unit = 17; EditorGUILayout.Knob(new Vector2(unit, unit), volume, 0, 1, "", Color.gray, Color.red, false, GUILayout.Width(unit)); }
private void DisplayForSeven() { knob_Angle = EditorGUILayout.Knob(Vector2.one * 64, knob_Angle, 0, 360, "度", Color.gray, Color.red, true); }