UnityGUI(五)GUI控件综合使用

cs 复制代码
public event UnityAction clickEvent;

protected override void StyleOffDraw()
 {
     if( GUI.Button(guiPos.Pos, content ) )
     {
         clickEvent?.Invoke();
     }
 }

protected override void StyleOnDraw()
 {
    if (GUI.Button(guiPos.Pos, content, style))
     {
         clickEvent?.Invoke();
     }
 }

Invoke() ≈ "执行委托里的所有方法"

clickEvent?.Invoke() ≈ "如果有方法在里面,就执行它们"

clickEvent.Invoke() + 手动判空 ≈ 同上,但麻烦且容易出错

cs 复制代码
public class CustomGUIToggleGroup : MonoBehaviour
{
    public CustomGUIToggle[] toggles;

    //记录上一次为true的 toggle
    private CustomGUIToggle frontTurTog;

    void Start()
    {
        if (toggles.Length == 0)
            return;

        //通过遍历 来为多个 多选框 添加 监听事件函数
        //在函数中做 处理 
        //当一个为true时 另外两个变成false
        for (int i = 0; i < toggles.Length; i++)
        {
            CustomGUIToggle toggle = toggles[i];
            toggle.changeValue += (value) =>
            {
                //当传入的 value  是ture时 需要把另外两个 
                //变成false
                if( value )
                {
                    //意味着另外两个要变成false
                    for (int j = 0; j < toggles.Length; j++)
                    {
                        //这里有闭包  toggle就是上一个函数中申明的变量
                        //改变了它的生命周期
                        if( toggles[j] != toggle )
                        {
                            toggles[j].isSel = false;
                        }
                    }
                    //记录上一次为true的toggle
                    frontTurTog = toggle;
                }
                //来判断 当前变成false的这个toggle是不是上一次为true
                //如果是 就不应该让它变成false
                else if( toggle == frontTurTog)
                {
                    //强制改成 true
                    toggle.isSel = true;
                }
            };
        }
    }

}
相关推荐
z落落1 分钟前
C# 抽象类(abstract)
java·开发语言·c#
折哥的程序人生 · 物流技术专研7 分钟前
AI 编程与行业赋能|专栏总目录(持续更新)
开发语言·人工智能·软件工程·ai编程
SilentSamsara9 分钟前
爬虫工程化:Playwright + 反反爬 + 数据清洗管道实战
开发语言·爬虫·python·青少年编程·playwright
AI玫瑰助手12 分钟前
Python函数:函数的返回值(return)与多值返回
开发语言·python·信息可视化
花果山~~程序猿14 分钟前
快速认识python项目的虚拟环境
开发语言·python
basketball61621 分钟前
Go语言从入门到进阶:8. 接口
开发语言·后端·golang
gCode Teacher 格码致知23 分钟前
Python教学:字符编码的四种环境-由Deepseek产生
开发语言·python
铁链鞭策大师26 分钟前
JavaEE之多线程
java·开发语言·java-ee
我是唐青枫30 分钟前
Java Optional 实战指南:优雅处理空值与链式转换
java·开发语言
垂葛酒肝汤39 分钟前
Unity的UGUI的坐标
unity