U3D_TobaccoWarehouseISMDTSy.../Assets/Framework/Scripts/Runtime/Engine/Engine.Console/ConsoleGUI.cs

139 lines
4.9 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using MotionFramework.Utility;
using UnityEngine;
namespace MotionFramework.Console
{
public static class ConsoleGUI
{
private static bool _initGlobalStyle = false;
public static GUIStyle HorizontalScrollbarStyle { private set; get; }
public static GUIStyle HorizontalScrollbarThumbStyle { private set; get; }
public static GUIStyle VerticalScrollbarStyle { private set; get; }
public static GUIStyle VerticalScrollbarThumbStyle { private set; get; }
public static GUIStyle XStyle { private set; get; }
public static GUIStyle ToolbarStyle { private set; get; }
public static GUIStyle ButtonStyle { private set; get; }
public static GUIStyle ToogleStyle1 { private set; get; }
public static GUIStyle ToogleStyle2 { private set; get; }
public static GUIStyle TextFieldStyle { private set; get; }
public static GUIStyle LableStyle { private set; get; }
public static GUIStyle RichLabelStyle { private set; get; }
public static int RichLabelFontSize { private set; get; }
private static GUIStyle _cachedHorizontalScrollbarThumb;
private static GUIStyle _cachedVerticalScrollbarThumb;
/// <summary>
/// 创建一些高度和字体大小固定的控件样式
/// 控制台的标准分辨率为 : 1920X1080
/// </summary>
internal static void InitGlobalStyle()
{
if (_initGlobalStyle == false)
{
_initGlobalStyle = true;
float scale;
if (Screen.height > Screen.width)
{
// 竖屏Portrait
scale = Screen.width / 1080f;
}
else
{
// 横屏Landscape
scale = Screen.width / 1920f;
}
HorizontalScrollbarStyle = new GUIStyle(GUI.skin.horizontalScrollbar);
HorizontalScrollbarStyle.fixedHeight = (int)(30 * scale);
HorizontalScrollbarThumbStyle = new GUIStyle(GUI.skin.horizontalScrollbarThumb);
HorizontalScrollbarThumbStyle.fixedHeight = (int)(30 * scale);
VerticalScrollbarStyle = new GUIStyle(GUI.skin.verticalScrollbar);
VerticalScrollbarStyle.fixedWidth = (int)(30 * scale);
VerticalScrollbarThumbStyle = new GUIStyle(GUI.skin.verticalScrollbarThumb);
VerticalScrollbarThumbStyle.fixedWidth = (int)(30 * scale);
XStyle = new GUIStyle(GUI.skin.button);
XStyle.fontSize = (int)(38 * scale);
XStyle.fixedWidth = (int)(40 * scale);
XStyle.fixedHeight = (int)(40 * scale);
ToolbarStyle = new GUIStyle(GUI.skin.button);
ToolbarStyle.fontSize = (int)(28 * scale);
ToolbarStyle.fixedHeight = (int)(40 * scale);
ButtonStyle = new GUIStyle(GUI.skin.button);
ButtonStyle.fontSize = (int)(28 * scale);
ButtonStyle.fixedHeight = (int)(40 * scale);
ToogleStyle1 = new GUIStyle(GUI.skin.button);
ToogleStyle1.fontSize = (int)(26 * scale);
ToogleStyle1.fixedHeight = (int)(35 * scale);
ToogleStyle2 = new GUIStyle(GUI.skin.box);
ToogleStyle2.fontSize = (int)(26 * scale);
ToogleStyle2.fixedHeight = (int)(35 * scale);
TextFieldStyle = new GUIStyle(GUI.skin.textField);
TextFieldStyle.fontSize = (int)(22 * scale);
TextFieldStyle.fixedHeight = (int)(30 * scale);
LableStyle = new GUIStyle(GUI.skin.label);
LableStyle.fontSize = (int)(24 * scale);
RichLabelStyle = GUIStyle.none;
RichLabelStyle.richText = true;
RichLabelFontSize = (int)(24 * scale);
}
}
public static Vector2 BeginScrollView(Vector2 pos, float offset = 0f)
{
// 设置滑动条皮肤
_cachedHorizontalScrollbarThumb = GUI.skin.horizontalScrollbarThumb;
_cachedVerticalScrollbarThumb = GUI.skin.verticalScrollbarThumb;
GUI.skin.horizontalScrollbarThumb = HorizontalScrollbarThumbStyle;
GUI.skin.verticalScrollbarThumb = VerticalScrollbarThumbStyle;
float scrollWidth = Screen.safeArea.width - VerticalScrollbarStyle.fixedWidth;
float scrollHeight = Screen.safeArea.height - ToolbarStyle.fixedHeight * 2 - offset;
return GUILayout.BeginScrollView(pos, HorizontalScrollbarStyle, VerticalScrollbarStyle, GUILayout.Width(scrollWidth), GUILayout.Height(scrollHeight));
}
public static void EndScrollView()
{
GUILayout.EndScrollView();
// 还原滑动条皮肤
GUI.skin.horizontalScrollbarThumb = _cachedHorizontalScrollbarThumb;
GUI.skin.verticalScrollbarThumb = _cachedVerticalScrollbarThumb;
}
public static bool Toggle(string name, bool checkFlag)
{
GUIStyle style = checkFlag ? ToogleStyle1 : ToogleStyle2;
if (GUILayout.Button(name, style))
{
checkFlag = !checkFlag;
}
return checkFlag;
}
public static void Lable(string text)
{
GUILayout.Label($"<size={RichLabelFontSize}><color=white>{text}</color></size>", RichLabelStyle);
}
public static void RedLable(string text)
{
GUILayout.Label($"<size={RichLabelFontSize}><color=red>{text}</color></size>", RichLabelStyle);
}
public static void YellowLable(string text)
{
GUILayout.Label($"<size={RichLabelFontSize}><color=yellow>{text}</color></size>", RichLabelStyle);
}
}
}