8.自定义多选框

8.自定义常用控件-自定义多选框


8.1 知识点

创建自定义多选框,添加选中和更改状态后的事件等相关变量

//自定义多选框
public class CustomGUIToggle : CustomGUIControl
{
    //更改之前是否选中
    private bool isOldSel;

    //是否选中
    public bool isSel;

    //更改选中状态后的响应事件
    public event UnityAction<bool> changeValue;
}

实现Style关和开的绘制抽象方法,每次实时赋值是否选中,判断选中状态是否变化,变化执行更改状态后的事件

//实现Style关和开的绘制抽象方法

protected override void StyleOffDraw()
{
    //每次实时赋值是否选中
    isSel = GUI.Toggle(guiPos.Pos, isSel, content);

    //判断选中状态是否变化
    //选择状态只有变化时 才告诉外部执行函数 否则没有必要一直告诉别人同一个值
    if (isOldSel != isSel)
    {
        //执行更改选中状态后的响应事件
        changeValue?.Invoke(isSel);
        //赋值更改之前是否选中的为最新的
        isOldSel = isSel;
    }
}

protected override void StyleOnDraw()
{
    //每次实时赋值是否选中
    isSel = GUI.Toggle(guiPos.Pos, isSel, content, style);

    //判断选中状态是否变化
    //选择状态只有变化时 才告诉外部执行函数 否则没有必要一直告诉别人同一个值
    if (isOldSel != isSel)
    {
        //执行更改选中状态后的响应事件
        changeValue?.Invoke(isSel);
        //赋值更改之前是否选中的为最新的
        isOldSel = isSel;
    }
}

8.2 知识点代码

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

//自定义多选框
public class CustomGUIToggle : CustomGUIControl
{
    //更改之前是否选中
    private bool isOldSel;

    //是否选中
    public bool isSel;

    //更改选中状态后的响应事件
    public event UnityAction<bool> changeValue;

    //实现Style关和开的绘制抽象方法

    protected override void StyleOffDraw()
    {
        //每次实时赋值是否选中
        isSel = GUI.Toggle(guiPos.Pos, isSel, content);

        //判断选中状态是否变化
        //选择状态只有变化时 才告诉外部执行函数 否则没有必要一直告诉别人同一个值
        if(isOldSel != isSel)
        {
            //执行更改选中状态后的响应事件
            changeValue?.Invoke(isSel);
            //赋值更改之前是否选中的为最新的
            isOldSel = isSel;
        }
    }

    protected override void StyleOnDraw()
    {
        //每次实时赋值是否选中
        isSel = GUI.Toggle(guiPos.Pos, isSel, content, style);

        //判断选中状态是否变化
        //选择状态只有变化时 才告诉外部执行函数 否则没有必要一直告诉别人同一个值
        if (isOldSel != isSel)
        {
            //执行更改选中状态后的响应事件
            changeValue?.Invoke(isSel);
            //赋值更改之前是否选中的为最新的
            isOldSel = isSel;
        }
    }
}


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

×

喜欢就点赞,疼爱就打赏