在进行编辑器扩展时,创建组件的方法一般都会提供GUIStyle参数,可以让我们自定义样式。修改背景图,字体大小,颜色等等。

比如,创建Button组件的方法:public static bool Button(string text, GUIStyle style, params GUILayoutOption[] options);

创建时可以传递一个GUIStyle参数来自定义样式。

  在GUI.skin.customStyles数组中,unity定义了很多自带的样式。有的需求可以直接在这些样式里面来找符合需求的样式。怎么找呢?写个工具:

using UnityEngine;
using UnityEditor; public class GUIStyleViewer : EditorWindow
{
private Vector2 scrollVector2 = Vector2.zero;
private string search = ""; [MenuItem("UFramework/GUIStyle查看器")]
public static void InitWindow()
{
EditorWindow.GetWindow(typeof(GUIStyleViewer));
} void OnGUI()
{
GUILayout.BeginHorizontal("HelpBox");
GUILayout.Space();
search = EditorGUILayout.TextField("", search, "SearchTextField", GUILayout.MaxWidth(position.x / ));
GUILayout.Label("", "SearchCancelButtonEmpty");
GUILayout.EndHorizontal();
scrollVector2 = GUILayout.BeginScrollView(scrollVector2);
foreach (GUIStyle style in GUI.skin.customStyles)
{
if (style.name.ToLower().Contains(search.ToLower()))
{
DrawStyleItem(style);
}
}
GUILayout.EndScrollView();
} void DrawStyleItem(GUIStyle style)
{
GUILayout.BeginHorizontal("box");
GUILayout.Space();
EditorGUILayout.SelectableLabel(style.name);
GUILayout.FlexibleSpace();
EditorGUILayout.SelectableLabel(style.name, style);
GUILayout.Space();
EditorGUILayout.SelectableLabel("", style, GUILayout.Height(), GUILayout.Width());
GUILayout.Space();
if (GUILayout.Button("复制GUIStyle名字"))
{
TextEditor textEditor = new TextEditor();
textEditor.text = style.name;
textEditor.OnFocus();
textEditor.Copy();
}
GUILayout.EndHorizontal();
GUILayout.Space();
}
}

点击菜单栏UFramework->GUIStyle查看器:

在里面寻找我们想要的样式即可。

我们这样创建一个button按钮:

if (GUILayout.Button("Button", GUILayout.Width(), GUILayout.Height()))
{
OnClickButton();
}

这样不传GUIStyle样式参数就是使用默认样式,如下:

  现在我们的需求是点击后,把Button按钮设置位不可点击的样式,我们在GUIStyle查看器里寻址我们需要的样式,

看到ObjectPickerBackground跟我们需要的样式差不多,决定使用这个样式

怎么使用这个样式呢?

点击复制GUIStyle名字按钮,会把该GUIStyle样式的名字 "ObjectPickerBackground" 复制到剪切板。然后在unity中用该名字定义GUIStyle:

GUIStyle styleApply = new GUIStyle("ObjectPickerBackground"); //直接用样式名定义
styleApply.alignment = TextAnchor.MiddleCenter; //该样式文字偏左了,我们想让它居中对齐
if (GUILayout.Button("Button", styleApply, GUILayout.Width(), GUILayout.Height()))
{
OnClickButton();
}

好了,Button的样式就变成这样了

最新文章

  1. linux 命令之comm
  2. 关于Web开发里并发、同步、异步以及事件驱动编程的相关技术
  3. tcpip
  4. <《巴菲特之道 (第三版)》>读书笔记
  5. 浏览器检测navigator 对象
  6. FIN_WAIT1 能持续多久?你知道吗
  7. Java中的哈希
  8. apache常见错误汇总
  9. Android(java)学习笔记169:Activity中的onCreate()方法分析
  10. JavaScript之共享onload
  11. 43个优秀的Swift开源项目推荐(转载)
  12. Microsoft office2010页码设置----论文、课程设计报告格式
  13. [国嵌攻略][066][ARP协议实现]
  14. [翻译] 使用 Python 创建你自己的 Shell:Part II
  15. Input标签使用整理
  16. 网络编程三 Socket
  17. Android--UI之Radio、Check、Toggle
  18. Html p 标签
  19. Lock的lockInterruptibly()方法
  20. FJUT Home_W的拆分序列(DP)题解

热门文章

  1. RabbitMQ消息确认机制
  2. VS中的Modules窗口
  3. 使用flow提升js代码的健壮性
  4. 在Hadoop-3.1.2上安装HBase-2.2.1
  5. selenium--单选框和复选框的操作
  6. 基于Linux(中标麒麟)上QT的环境搭建
  7. Redis的三个框架:Jedis,Redisson,Lettuce
  8. mysql(二)事务 & 事务的实现 & 锁
  9. FPGA硬件加速
  10. 20165230田坤烨网络对抗免考报告_基于WIN10的渗透攻击