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