zoukankan      html  css  js  c++  java
  • Unity OnGUI 的可视化编辑

    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 = "请输入第一条内容: 
    请输入第二条内容:";
    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     }

      

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

  • 相关阅读:
    Python中matplotlib模块的简单使用
    Python中numpy模块的简单使用
    TensorFlow入门(矩阵基础)
    TensorFlow入门(常量变量及其基本运算)
    计算机视觉入门
    菜得一P!
    Hdu2097 Sky数
    Hdu2099 整除的尾数
    Hdu2098 分拆素数和
    Linux下用Bash语言实现简单排序的功能
  • 原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13091862.html
Copyright © 2011-2022 走看看