7.工具栏和选择网格

7.组合控件-工具栏和选择网格


7.1 知识点

工具栏

Toolbar静态方法 创建工具栏

// 创建一个工具栏。
// 需要声明一个 int 变量用于选择 和一个 string 数组用于显示当前选择的工具栏的内容。
// Toolbar静态方法会返回一个 int 值,也需要重新赋值个给选择的 int 变量。
toolbarIndex = GUI.Toolbar(new Rect(0, 0, 200, 30), toolbarIndex, toolbarInfos);

// 工具栏可以帮助我们根据不同的返回索引 来处理不同的逻辑
switch (toolbarIndex)
{
    case 0:
        // 处理索引为0的逻辑
        break;
    case 1:
        // 处理索引为1的逻辑
        break;
    case 2:
        // 处理索引为2的逻辑
        break;
}

效果

选择网格

SelectionGrid静态方法 创建选择网格

// 创建一个按钮网格。
// 也需要声明一个 int 变量用于选择 和一个 string 数组用于显示当前选择的工具栏的内容。
// 相对 toolbar 多了一个参数 xCount 代表 水平方向最多显示的按钮数量 比如有三个按钮 这参数天了填了2 那么一行最多只要两个按钮。
selGridIndex = GUI.SelectionGrid(new Rect(0, 50, 200, 60), selGridIndex, toolbarInfos, 2);

效果


7.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson07_复合控件_工具栏和选择网格 : MonoBehaviour
{
    private int toolbarIndex = 0;
    private string[] toolbarInfos = new string[] { "强化", "进阶", "幻化" };

    private int selGridIndex = 0;

    private void OnGUI()
    {
        #region 知识点一 工具栏

        //Toolbar静态方法 创建工具栏
        //创建一个工具栏。
        //需要声明一个int变量用于选择 和一个string数组用于显示当前选择的工具栏的内容
        //Toolbar静态方法会返回一个int值 也需要重新赋值个给选择的int变量
        toolbarIndex = GUI.Toolbar(new Rect(0, 0, 200, 30), toolbarIndex, toolbarInfos);
        //工具栏可以帮助我们根据不同的返回索引 来处理不同的逻辑
        switch (toolbarIndex)
        {
            case 0:
                break;
            case 1:
                break;
            case 2:
                break;
        }


        #endregion

        #region 知识点二 选择网格

        //SelectionGrid静态方法 创建选择网格
        //创建一个按钮网格。
        //也需要声明一个int变量用于选择 和一个string数组用于显示当前选择的工具栏的内容
        //相对toolbar多了一个参数 xCount 代表 水平方向最多显示的按钮数量 比如有三个按钮 这参数天了填了2 那么一行最多只要两个按钮
        selGridIndex = GUI.SelectionGrid(new Rect(0, 50, 200, 60), selGridIndex, toolbarInfos, 2);

        #endregion
    }
}

7.3 练习题

制作三个页签,选择不同的页签,将在下方显示不同的信息

创建工具栏和选择网格,写切换逻辑

public class TestPanel : MonoBehaviour
{
    public Rect toolbarPos;
    public Rect selGridPos;

    public string[] strs = new string[] { "装备", "进阶", "幻化" };

    private int nowSelIndex = 0;

    public Rect labelPos;

    private void OnGUI()
    {
        nowSelIndex = GUI.Toolbar(toolbarPos, nowSelIndex, strs);
        nowSelIndex = GUI.SelectionGrid(selGridPos, nowSelIndex, strs, 1);

        switch (nowSelIndex)
        {
            case 0:
                GUI.Label(labelPos, "装备信息");
                break;
            case 1:
                GUI.Label(labelPos, "进阶信息");
                break;
            case 2:
                GUI.Label(labelPos, "幻化信息");
                break;
        }
    }
}

修改脚本参数,查看效果


7.4 练习题代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

#region Lesson07 练习题一
//制作三个页签,选择不同的页签,将在下方显示不同的信息

public class TestPanel : MonoBehaviour
{
    public Rect toolbarPos;
    public Rect selGridPos;

    public string[] strs = new string[] { "装备", "进阶", "幻化" };

    private int nowSelIndex = 0;

    public Rect labelPos;

    private void OnGUI()
    {
        nowSelIndex = GUI.Toolbar(toolbarPos, nowSelIndex, strs);
        nowSelIndex = GUI.SelectionGrid(selGridPos, nowSelIndex, strs, 1);

        switch (nowSelIndex)
        {
            case 0:
                GUI.Label(labelPos, "装备信息");
                break;
            case 1:
                GUI.Label(labelPos, "进阶信息");
                break;
            case 2:
                GUI.Label(labelPos, "幻化信息");
                break;
        }
    }
}

#endregion


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏