Unity编辑器扩展中,使用Unity自带的GUIStyle
2024-08-28 16:08:04
在进行编辑器扩展时,创建组件的方法一般都会提供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的样式就变成这样了
最新文章
- linux 命令之comm
- 关于Web开发里并发、同步、异步以及事件驱动编程的相关技术
- tcpip
- <;《巴菲特之道 (第三版)》>;读书笔记
- 浏览器检测navigator 对象
- FIN_WAIT1 能持续多久?你知道吗
- Java中的哈希
- apache常见错误汇总
- Android(java)学习笔记169:Activity中的onCreate()方法分析
- JavaScript之共享onload
- 43个优秀的Swift开源项目推荐(转载)
- Microsoft office2010页码设置----论文、课程设计报告格式
- [国嵌攻略][066][ARP协议实现]
- [翻译] 使用 Python 创建你自己的 Shell:Part II
- Input标签使用整理
- 网络编程三 Socket
- Android--UI之Radio、Check、Toggle
- Html p 标签
- Lock的lockInterruptibly()方法
- FJUT Home_W的拆分序列(DP)题解