查看Unity的GUI样式

Editor Style Viewer

在开发过程中,我喜欢编写一些辅助的Editor插件,方便在游戏开发过程进行调试。

下面是摘自Asset Store的一个查看Unity 默认GUI样式的小工具

插件链接:Editor Style Viewer https://www.assetstore.unity3d.com/en/#!/content/3282

 

预览

代码

原理:遍历所有的GUI.skin,并显示其样式

using UnityEngine;
using UnityEditor;

/// <summary>
/// 查看默认的gui skin样式
/// </summary>
public class EditorStyleView : EditorWindow
{
    private Vector2 scrollPosition = Vector2.zero;
    private string search = string.Empty;

    [MenuItem("Tools/默认GUI样式查看器")]
    static void Init()
    {
        var window= EditorWindow.GetWindow<EditorStyleView>();
        window.title = "GUI样式查看器";
        window.Show();

    }

    void OnGUI()
    {
        GUILayout.BeginHorizontal("HelpBox");
        GUILayout.Label("单击左侧样式将复制其名到剪贴板", "label");
        GUILayout.FlexibleSpace();
        GUILayout.Label("查找:");
        search = EditorGUILayout.TextField(search);
        GUILayout.EndHorizontal();

        scrollPosition = GUILayout.BeginScrollView(scrollPosition);

        //foreach (GUIStyle style in GUI.skin.customStyles)
        foreach (GUIStyle style in GUI.skin)
        {
            //过滤
            if (style.name.ToLower().Contains(search.ToLower()))
            {
                //设置奇偶行不同背景
                GUILayout.BeginHorizontal("PopupCurveSwatchBackground");
                GUILayout.Space(20);//左边留白20
                if (GUILayout.Button(style.name, style))
                {
                    //把名字存储在剪粘板
                    EditorGUIUtility.systemCopyBuffer = style.name; // "\"" + style.name + "\"";
                }
                GUILayout.FlexibleSpace();
                EditorGUILayout.SelectableLabel("\"" + style.name + "\"");
                GUILayout.EndHorizontal();
                GUILayout.Space(20);//右边留白20
            }
        }

        GUILayout.EndScrollView();
    }
}

 

GM小工具

比如这样的GM小工具,辅助开发

1、创建GMEditorWindow.cs,放在Editor目录下

2、编写与游戏相关的逻辑功能

[MenuItem("Game/GM指令")]
static void Init()
{
    var window = EditorWindow.GetWindow<GMEditorWindow>();
    window.title = "XX GM指令";
    window.Show();
}

private int newExp = 0, newMoney = 0, newVip = 0, newVp = 0, newCoin = 0, newSpirts = 0;
private int maxHp = 0, maxVp = 0,maxHurt=0;

private int nMapId = 0;

public void OnGUI()
{
    EditorGUILayout.LabelField("== 加数值 指令 ==");

    GUILayout.BeginHorizontal();
    GUILayout.Label("经验:");
    newExp = EditorGUILayout.IntField(newExp, GUILayout.ExpandWidth(true), GUILayout.MinHeight(20));
    if (GUILayout.Button("加经验", GUILayout.MinWidth(100), GUILayout.MaxHeight(20)))
    {
            AddExp(newExp);
    }
    //-------
    GUILayout.Label("VIP钱:");
    newVip = EditorGUILayout.IntField(newVip, GUILayout.ExpandWidth(true), GUILayout.MinHeight(20));
    if (GUILayout.Button("加VIP", GUILayout.MinWidth(100), GUILayout.MaxHeight(20)))
    {
            AddVip(newVip);
    }
    GUILayout.EndHorizontal();

    GUILayout.BeginHorizontal();
    GUILayout.Label("金币:");
    newCoin = EditorGUILayout.IntField(newCoin);
    if (GUILayout.Button("加金币", GUILayout.MinWidth(100), GUILayout.MaxHeight(20)))
    {
        AddCoin(newCoin);
    }
    //-------
    GUILayout.Label("元宝");
    newMoney = EditorGUILayout.IntField(newMoney);
    if (GUILayout.Button("加元宝", GUILayout.MinWidth(100), GUILayout.MaxHeight(20)))
    {
        AddMoney(newMoney);
    }
    GUILayout.EndHorizontal();
    //后面继续....
}
时间: 2024-10-05 17:38:51

查看Unity的GUI样式的相关文章

(转)使用.NET Reflector 查看Unity引擎里面的DLL文件

当你查看unity里面API的时候,是不是有时候追踪了一两步就碰到DLL文件走不下去了呢?很是不爽吧. 这种问题我也是经常碰到.这是人家商业引擎不想让你看到底层代码啦,所以着急不得. 不过,今天我终于有了办法解决这个问题.那就是使用反编译DLL文件!简单,粗暴.不过为了了解底层的结构,这也不失为一种办法哦. OK!啰嗦了半天,让我带你进入今天的主题吧. 1.首先下载.NET Reflector 8.3.3.115.(如果链接失效,请告诉我哦.里面还有一个插件可以导出cs文件) 2.双击安装Ref

【Unity3D API的学习与使用】Unity实现GUI组件的位移、缩放和旋转

在使用Unity中GUI组件时,我们可以像处理一个实体一样,对其进行位移.缩放和旋转的操作. 其中,位移和缩放都只需要改变其Rect的内容即可,前者改变x.y参数,后者改变width和height参数,而旋转则有所不同,它需要使用GUI.matrix的一个函数: GUIUtility.RotateAroundPivot (rotAngle, pivotPoint) 参数说明: rotAngle:旋转的角度: pivotPoint:旋转时围绕的中心点. JavaScript示例: #pragma

使用.NET Reflector 查看Unity引擎里面的DLL文件

转载标注来源哦!原地址在这里!在这里! 当你查看unity里面API的时候,是不是有时候追踪了一两步就碰到DLL文件走不下去了呢?很是不爽吧. 这种问题我也是经常碰到.这是人家商业引擎不想让你看到底层代码啦,所以着急不得. 不过,今天我终于有了办法解决这个问题.那就是使用反编译DLL文件!简单,粗暴.不过为了了解底层的结构,这也不失为一种办法哦. OK!啰嗦了半天,让我带你进入今天的主题吧. 1.首先下载.NET Reflector 8.3.3.115.(如果链接失效,请告诉我哦.里面还有一个插

Unity基础 GUI编程

脚本语言:C# 附上一张图说明Unity GUI编程中可用的控件:(可能有遗漏) 下面列出一些例子来说明: 1.Groups : 在固定Layout模式中起到组织可用项的功能,它让你在屏幕的一个区域中包含多个控件.把定义的控件放在GUI.BeginGroup()和 GUI.EndGroup()这对函数中间,所有控件的位置坐标都以Groups的0坐标为起点,假如更改了group坐标,那么内部的控件也会跟随改变. 示例代码: using UnityEngine; using System.Colle

C#编写Unity基础GUI之控件布局

1.GUILayout控件 1 void OnGUI() 2 { 3 GUILayout.Button("这是GUILayout按钮"); 4 } 效果: 会自动调整控件大小,自动定位在屏幕左上角: 2.组视图 1 void OnGUI() 2 { 3 GUI.BeginGroup(new Rect(Screen.width / 2, Screen.height / 2, 500, 500)); 4 5 GUI.Button(new Rect(0,0,100,100),"按钮

C#编写Unity基础GUI之按钮控件

基本方法: public static bool Button(Rect position, GUIContent content); public static bool Button(Rect position, string text); public static bool Button(Rect position, Texture image); public static bool Button(Rect position, GUIContent content, GUIStyle

C#编写Unity基础GUI之动态窗口

1.创建窗口 1 //声明窗口位置大小 2 private Rect pos = new Rect(10,60,120,50); 3 4 //回调函数 5 void Wincallback(int id) 6 { 7 if(GUI.Button(new Rect(10,20,100,20),"窗口内按钮")){ 8 print("按钮在窗口内被单击"); 9 } 10 } 11 12 void OnGUI() 13 { 14 pos = GUI.Window(0,

C#编写Unity基础GUI之控件-2

1.文本输入框 1 public string text; 2 3 void OnGUI(){ 4 text = GUI.TextField(new Rect(140, 140, 100, 40), text); 5 6 if (GUI.Button(new Rect(10, 10, 100, 50), text)) 7 { 8 print("用户单击了按钮"); 9 } 10 } 效果: 2.开关按钮控件 1 public bool toggleBool; 2 3 void OnGU

如何查看Unity的版本

打开Unity,Help->About Unity