Unity 3D 官方文档 UGUI总览 IMGUI OnGUI Editor脚本初窥2
来源:互联网 发布:亚马逊电子书包月 知乎 编辑:程序博客网 时间:2024/05/16 11:33
版本:unity 5.6.3 语言:C#
总起:
本章会讨论OnGUI的剩下的内容,包括Skin和Style、Layout自动布局等。相信通过这两章对OnGUI的研究会对这套系统更加的了解。
Customization 皮肤定制:
这边讲到了GUIStyle和GUISkin,功能是对GUI的界面皮肤进行定制,当然只使用默认皮肤根本也不会影响代码的功能。
可以通过在Project窗口下右键新建一个GUISkin:
这边的GUISkin就包括了一套皮肤,包括Box、Button、Toggle等,而所谓GUIStyle是指某个组件的皮肤,比如点开上图的Box就是一个Style,Button又是另一个Style。
以下是应用一个GUIStyle的代码,只需要添加最后一个参数就OK了:
public GUIStyle customButton; void OnGUI() { GUI.Button(new Rect(10, 10, 150, 20), "I am a Custom Button", customButton); }
GUISkin的用法是修改当前环境中的皮肤,也很方便:
public GUISkin mySkin; void OnGUI() { GUI.skin = mySkin; GUI.Button(new Rect(10, 10, 150, 20), "Skinned Button"); }
*需要注意的是别图省事直接修改默认的皮肤了,这样会导致Unity自己本身自带的窗口显示异常,修改皮肤就使用以上两种方法就够了。
自动布局 Layout:
再次强调一遍,GUI类下的组件都是固定摆放的,而GUILayout类是自动布局的,两者功能上是完全相同,区别仅仅是是否自动布局这点。
GUI.BeginGroup(Rect)和GUI.EndGroup()成对使用时,可以改变其中的组件的相对位置,相当于是放在了其父物体下:
void OnGUI() { GUI.BeginGroup(new Rect(Screen.width / 2 - 50, Screen.height / 2 - 50, 100, 100)); GUI.Box(new Rect(0, 0, 100, 100), "Group is here"); GUI.Button(new Rect(10, 40, 80, 30), "Click me"); GUI.EndGroup(); }
以上的代码下,虽然Box的位置是(0, 0),但因为使用到了Group放在了中间,所以Box的位置也是在中间。
下面开始讲自动布局。
GUILayout.BeginArea(Rect)和GUILayout.EndArea()成对使用,效果类似于GUI的Group,不多说。
GUILayout中最重要的两个组是BeginHorizontal()和EndHorizontal()、BeginVertical()和EndVertical(),可以自动进行水平和垂直布局:
float sliderValue = 1.0f; float maxSliderValue = 10.0f; void OnGUI() { GUILayout.BeginHorizontal(); if (GUILayout.RepeatButton("Increase max\nSlider Value")) { maxSliderValue += 3.0f * Time.deltaTime; } GUILayout.BeginVertical(); GUILayout.Box("Slider Value: " + Mathf.Round(sliderValue)); sliderValue = GUILayout.HorizontalSlider(sliderValue, 0.0f, maxSliderValue); GUILayout.EndVertical(); GUILayout.EndHorizontal(); }
布局之间的嵌套应用完全也是没有问题的。
Unity的官方文档中下一篇讲到了对原本的OnGUI进行扩展,其实就是将几个组件封装到一个方法里,不多说了,但是在真正写一个窗口时很重要,比如说Vector3的三个水平的输入框,可以封装成一个方法,以后要调用到类似的就可以直接使用。
个人:
UGUI的所有内容就讲到这里了,我编写的过程中确实学到了很多知识,不过花费的时间确实是比较长的,每次遇到不清楚的知识点都会查阅资料,然后自己在工程上做测试。
嗯……真希望自己还处于学生时代,能悠闲地把博客更完,哈哈。
然后因为要开始忙了,所以更新的不会很频繁,见谅见谅。
- Unity 3D 官方文档 UGUI总览 IMGUI OnGUI Editor脚本初窥2
- Unity 3D 官方文档 UGUI总览 IMGUI OnGUI Editor脚本初窥1
- Unity3D 官方文档 UGUI总览 可互动组件的介绍
- Unity3D 官方文档 UGUI总览 自动布局组件的介绍
- Unity IMGUI
- [Unity官方文档翻译]2D or 3D Projects Unity中2D和3D项目的区别
- Unity官方文档【2】
- Unity3D 官方文档 UGUI的总览 Canvas和EventSystem的认识
- [cnblogs镜像]ONGUI->NGUI->UGUI (Unity UI史)
- [unity] OnGUI
- UGUI官方文档canvas
- UNity UGUI 2D图片追随问题
- [Unity官方文档翻译]Primitive and Placeholder Objects Unity原生3D物体教程
- Unity3D 官方文档 UGUI总览 一个将图片铺满整个屏幕的技巧、可视化组件的介绍
- Unity-屏幕适配UGUI与3D/2D场景
- 2D Toolkit 官方文档。
- UGUI官方文档之控件
- Unity说明文档翻译-2D or 3D Projects
- LeetCode 413. Arithmetic Slices
- python字符串
- LA 4670 Dominating Patterns——AC自动机
- ubuntu 请尝试不指明软件包的名字来运行“apt-get -f install”(也可以指定一个解决办法)。
- Android客户端与服务器端的json数据交互(很详细)
- Unity 3D 官方文档 UGUI总览 IMGUI OnGUI Editor脚本初窥2
- WebView的简单使用,JS的调用
- ETL程序从数据接口文件加载数据到外表
- Struts2与SpringMVC的区别
- POJ 2010 Moo University
- ElasticSearch源码
- 使用nginx记录用户登录数
- CCF 学生排队 C++ Java
- IP地址划分