ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity OnGUI 的视觉化编辑

2020-06-11 10:55:04  阅读:325  来源: 互联网

标签:25 GUI OnGUI Unity new 视觉 void Rect


GUI

  Unity 的 GUI 主要分成两种制作方式:

  一种是以 Component 命令的方式直接附给场景物体使用;

  像 GUITextureGUIText,它们的建立及调整相当方便,不用在执行期就能看得到,而且因为继承自 Component,所以也可以直接使用 transformgameObject 等变数内容。

  另一种则是在 OnGUI 中撰写的 GUI、GUILayout 等;

  这些可以配合 GUISkinGUIStyle 灵活运用制作各种表现方式的使用者介面,可惜的是它必须一行一行的撰写程式码,而且只有在游戏执行期才会呈现出来,变成制作时只能倚重程式设计人员撰写,调整时必须执行游戏把调整结果的位置及宽高等信息记录下来,再另行修改;

OnGUI

  OnGUIUnity 中通过代码驱动的 GUI 系统,主要用来创建调试工具、创建自定义属性面板、创建新的 Editor 窗口和工具达到扩展编辑器效果。

  OnGUI 在布局上,坐标系原点在屏幕左上角,所以不建议使用在项目 UI 当中。

Box矩形框

1     void OnGUI()
2     {
3         GUI.Box(new Rect(10, 10, 100, 90), "这是一个矩形框");
4     }

Button按钮

1     void OnGUI()
2     {
3         if (GUI.Button(new Rect(20, 40, 80, 20), "按钮"))
4         {
5             Debug.Log("按钮点击");
6         }
7     }

Label标签

  标签是非交互式的,无法单击或以其他方式移动,最好只进行信息的显示。

1     void OnGUI()
2     {
3         GUI.Label(new Rect(25, 25, 150, 30), "这是一条展示信息。");
4     }

RepeatButton按钮

  按住后会重复执行单击操作的按钮:点击按钮时,每一帧执行一次。

1     void OnGUI()
2     {
3         if (GUI.RepeatButton(new Rect(25, 25, 150, 30), "RepeatButton按钮"))
4         {
5             Debug.Log("重复执行!");
6         }
7     }

TextField单行输入框

1     private string textFieldString = "请输入... ...";
2 
3     void OnGUI()
4     {
5         textFieldString = GUI.TextField(new Rect(25, 25, 100, 30), textFieldString);
6     }

TextArea多行输入框

1     private string textAreaString = "请输入第一条内容: \n请输入第二条内容:";
2 
3     void OnGUI()
4     {
5         textAreaString = GUI.TextArea(new Rect(25, 25, 150, 60), textAreaString);
6     }

Toggle单选框

1     private bool toggleBool = true;
2 
3     void OnGUI()
4     {
5         toggleBool = GUI.Toggle(new Rect(25, 25, 100, 30), toggleBool, "单选框");
6     }

Toolbar工具栏

1     private int toolbarInt = 0;
2     private string[] toolbarStrings = { "第一页", "第二页", "第三页" };
3 
4     void OnGUI()
5     {
6         toolbarInt = GUI.Toolbar(new Rect(25, 25, 250, 30), toolbarInt, toolbarStrings);
7     }

SelectionGrid网格选择形式

1     private int selectionGridInt = 0;
2     private string[] selectionStrings = { "网格_1", "网格_2", "网格_3", "网格_4" };
3 
4     void OnGUI()
5     {
6         selectionGridInt = GUI.SelectionGrid(new Rect(25, 25, 300, 60), selectionGridInt, selectionStrings, 2);
7     }

HorizontalSlider水平滑动条

1     private float hSliderValue = 0.0f;
2 
3     void OnGUI()
4     {
5         hSliderValue = GUI.HorizontalSlider(new Rect(25, 25, 200, 30), hSliderValue, 0.0f, 10.0f);
6     }

VerticalSlider垂直滑动条

1     private float vSliderValue = 0.0f;
2 
3     void OnGUI()
4     {
5         vSliderValue = GUI.VerticalSlider(new Rect(25, 25, 100, 50), vSliderValue, 10.0f, 0.0f);
6     }

HorizontalScrollbar水平滚动条

1     private float hScrollbarValue;
2 
3     void OnGUI()
4     {
5         hScrollbarValue = GUI.HorizontalScrollbar(new Rect(25, 25, 200, 30), hScrollbarValue, 1.0f, 0.0f, 10.0f);
6     }

VerticalScrollbar垂直滚动条

1     private float vScrollbarValue;
2 
3     void OnGUI()
4     {
5         vScrollbarValue = GUI.VerticalScrollbar(new Rect(25, 25, 100, 50), vScrollbarValue, 1.0f, 10.0f, 0.0f);
6     }

ScrollView滚动视图

1     private Vector2 scrollViewVector = Vector2.zero;
2     private string innerText = "这是一个一条很长长长长长长长长长长长长长长长的信息。";
3 
4     void OnGUI()
5     {
6         scrollViewVector = GUI.BeginScrollView(new Rect(25, 25, 200, 100), scrollViewVector, new Rect(0, 0, 400, 400));
7         innerText = GUI.TextArea(new Rect(0, 0, 400, 400), innerText);
8         GUI.EndScrollView();
9     }

Window窗口

  控件的可拖动容器。

 1     private Rect windowRect = new Rect(20, 20, 150, 50);
 2 
 3     void OnGUI()
 4     {
 5         windowRect = GUI.Window(0, windowRect, WindowFunction, "Window窗口");
 6     }
 7 
 8     void WindowFunction(int windowID)
 9     {
10         Debug.Log("WindowFunction");
11     }

BeginGroup/EndGroup分组

 1     private string textFieldString_1 = "请输入... ...";
 2     private string textFieldString_2 = "请输入... ...";
 3 
 4     void OnGUI()
 5     {
 6         GUI.BeginGroup(new Rect(Screen.width / 2 - 50, Screen.height / 2 - 50, 300, 300));
 7         GUI.Box(new Rect(0, 0, 200, 200), "组合界面");
 8         textFieldString_1 = GUI.TextField(new Rect(0, 30, 200, 30), textFieldString_1);
 9         textFieldString_2 = GUI.TextField(new Rect(0, 70, 200, 30), textFieldString_2);
10         GUI.Button(new Rect(50, 120, 100, 30), "点击按钮");
11         GUI.EndGroup();
12     }

  

***| 以上内容仅为学习参考、学习笔记使用 |***

   

标签:25,GUI,OnGUI,Unity,new,视觉,void,Rect
来源: https://www.cnblogs.com/ChenZiRong1999/p/13091862.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有