139 lines
4.9 KiB
C#
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);
|
|
}
|
|
}
|
|
} |