QFramework v1.0 使用指南 更新篇:20240919. 新增 BindableDictionary

news2024/9/21 12:51:19

虽然笔者目前还不知道 BindableDictionary 能用在什么使用场景下,但是还是应童鞋的要求实现了 BindableDictionary。

基本使用如下:

using System.Linq;
using UnityEngine;

namespace QFramework.Example
{
    public class BindableDictionaryExample : MonoBehaviour
    {
        private BindableDictionary<string, string> mDictionary = new BindableDictionary<string, string>();

        private void Start()
        {
            mDictionary.OnCountChanged.Register(count =>
            {
                print("count:" + count);
            }).UnRegisterWhenGameObjectDestroyed(gameObject);

            mDictionary.OnAdd.Register((key, value) =>
            {
                print("add:" + key + "," + value);
            }).UnRegisterWhenGameObjectDestroyed(gameObject);

            mDictionary.OnRemove.Register((key, value) =>
            {
                print("remove:" + key + "," + value);
            }).UnRegisterWhenGameObjectDestroyed(gameObject);
            
            mDictionary.OnReplace.Register((key, oldValue,newValue) =>
            {
                print("replace:" + key + "," + oldValue + "," + newValue);
            }).UnRegisterWhenGameObjectDestroyed(gameObject);

            mDictionary.OnClear.Register(() =>
            {
                print("clear");
            }).UnRegisterWhenGameObjectDestroyed(gameObject);
        }

        private string mKeyToDelete = null;
        private void OnGUI()
        {
            IMGUIHelper.SetDesignResolution(640,360);
            
            GUILayout.Label("Count:" + mDictionary.Count);
            GUILayout.BeginVertical("box");
            
            foreach (var kv in mDictionary)
            {
                GUILayout.BeginHorizontal("box");
                GUILayout.Label($"{kv.Key},{kv.Value}");
                if (GUILayout.Button("-"))
                {
                    mKeyToDelete = kv.Key;
                }

                GUILayout.EndHorizontal();
            }

            if (GUILayout.Button("add"))
            {
                var key = "key" + Random.Range(0, 100);
                if (!mDictionary.ContainsKey(key))
                {
                    mDictionary.Add("key" + Random.Range(0,100),"value" + Random.Range(0,100));    
                }
            }

            if (mDictionary.Count > 0)
            {
                if (GUILayout.Button("remove"))
                {
                    mDictionary.Remove(mDictionary.Keys.First());
                }

                if (GUILayout.Button("replace"))
                {
                    mDictionary[mDictionary.Keys.First()] = "replaced value" + Random.Range(0, 100);
                }

                if (GUILayout.Button("clear"))
                {
                    mDictionary.Clear();
                }
            }

            GUILayout.EndVertical();
            
            
            
            
            if (mKeyToDelete.IsNotNullAndEmpty())
            {
                mDictionary.Remove(mKeyToDelete);
                mKeyToDelete = null;
            }
        }
    }
}

运行结果如下:
178a650f-97ee-44de-8f5c-447a853cdb6b

输出结果如下:
b8a5eb15-42cc-4c2d-9e5e-dff54e2a10e2

本文由 《QFramework 教程年会员》赞助,298 元,9 套教程一年内随便看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2152365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端评测》

前言 科技发展到如今2024年&#xff0c;可以说每一年都在发生翻天覆地的变化。而云上这个词时常都被大家提起&#xff0c;从个人设备连接到云端在如今在也不是梦了。而云电脑这个市场近年来迅速发展&#xff0c;无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验&am…

Adams与Matlab通过FMI联合仿真

Adams与Matlab的联合仿真通过Adams/Controls中的接口功能已经很早就实现&#xff0c;具体是通过Adams安装路径下的支持文件&#xff0c;利用Adams/Controls中的导出功能&#xff0c;将Adams模型生成模型文件以及同Matlab的接口文件*.m&#xff0c;然后在Matlab中执行该*.m文件后…

使用SoapUI、Postman工具调用Webservice方法

SoapUI工具更适合调用Webservice使用。 1.使用SoapUI工具调用Webservice 创建“New SOAP Project” 自行定义一个项目名称&#xff0c;输入wsdl地址&#xff1a; 在左侧列表找到方法名&#xff0c;双击“Request 1”, 在请求数据中&#xff0c;添加对应的参数&#xff0c;然…

Linux文件IO(五)-三种进程退出方法及空洞文件

1.三种进程退出方法 return 当程序在执行某个函数出错的时候&#xff0c;如果此函数执行失败会导致后面的步骤不能在进行下去时&#xff0c;应该在出错时终止程序运行&#xff0c;不应该让程序继续运行下去&#xff0c;那么如何退出程序、终止程序运行呢&#xff1f;有过编程…

面试面经|大模型算法岗常见面试题100道

本文提供了一份全面的大模型算法岗位面试题清单&#xff0c;包括基础理论、模型结构、训练微调策略、应用框架、分布式训练和模型推理等方面的知识点&#xff0c;旨在帮助求职者准备相关技术面试。 一、基础篇 1、目前主流的开源模型体系有哪些&#xff1f; Transformer体系&a…

RTX NVIDIA 3090卡配置对应pytorch,CUDA版本,NVIDIA驱动过程及问题整理

买了两块3090卡闲置很长时间了&#xff0c;之前tf 1.12.0版本用习惯了不想转工具。这段时间闲下来转了之后有些环境不适配&#xff0c;在雷神帮助下安装完毕&#xff0c;虽然出了点怪东西&#xff0c;整体还好。 原环境CUDA为11.4 其他配置如下 之前conda install的pytorch实为…

智慧仓储-AI销量预测

1、预测系统技术选型 基础层&#xff1a; Hbase、ClickHouse、Hdfs 用来做数据存储 框架层&#xff1a; 以 Spark RDD、Spark SQL、Hive 为主&#xff0c; MapReduce 程序占一小部分&#xff0c;是原先遗留下来的&#xff0c;目前正逐步替换成 Spark RDD。 选择 Spark 除了对…

【hot100-java】【每日温度】

R8-栈篇 印象题:单调栈的使用 参考本人博客&#xff1a;单调栈 class Solution {public int[] dailyTemperatures(int[] temperatures) {int numtemperatures.length;int [] retnew int[num];Stack<Integer>stnew Stack<>();for (int i0;i<num;i){while(!st.…

vscode 配置rust格式化的正确方法

vscode 配置rust格式化的正确方法&#xff1a; 在settings.json里输入&#xff1a; "[rust]": {"editor.defaultFormatter": "rust-lang.rust-analyzer","editor.formatOnSave": true}

揭露大模型本质,大模型入门必看的12本书!看完我直接跪了

敢不敢用一年时间读完这12本书&#xff0c;模型入门必看的12本书&#xff01;建议收藏&#xff01;&#xff01; 第一本&#xff1a; 《基于GPT-3,ChatGPT,GPT-4等Transformer架构的自然语言处理》 主要内容 了解用于解决复杂语言问题的新技术。将GPT-3与T5、GPT-2和基于BE…

[Linux]基础操作指令

开机/重启/登录/注销 进入xhsell 或者虚拟系统中, 右键桌面打开终端, 在终端执行命令, 重启或关机linux系统 建议使用普通账号登录, 如果权限不够时, 使用 su - 用户名 命令切换到超管, 然后再使用 logout命令退回到普通账号, logout 不能在图形界面的终端中使用 用户管理 Li…

【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;Linux Shell &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux基础IO &#x1f4d2;1. …

python源代码编译exe 防止反编译的问题

1&#xff09;使用pyinstaller 打包为exe, 记住是版本是5.*&#xff0c;我用的是5.13.2 &#xff0c;不能是6.* 这是第一步。 pyinstaller -F -i d:\whs.ico packer.py -w 2&#xff09;使用pyarmor 再次加密,我使用的版本是8.3.11&#xff0c;不是7.*&#xff0c;这是第二步…

[深度学习]神经网络

1 人工神经网络 全连接神经网络 2 激活函数 隐藏层激活函数由人决定输出层激活函数由解决的任务决定: 二分类:sigmoid多分类:softmax回归:不加激活(恒等激活identify)2.1 sigmoid激活函数 x为加权和小于-6或者大于6,梯度接近于0,会出现梯度消失的问题即使取值 [-6,6] ,…

C++速通LeetCode中等第16题-环形链表II(快慢指针)

算法思路&#xff08;主要是数学推导&#xff09;&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *detectCycle(ListNo…

实施项目,“流程重组”你是躲不开的

文/杨长春 作者简介&#xff1a;某IT公司项目总监&#xff0c;资深IT博主&#xff0c;专注于IT项目知识分享&#xff0c;著有《实战需求分析》、《软件需求分析实战》、《数字化管理软件实施》。 甲方跟本项目相关的领域&#xff0c;一定运行着一套管理体系&#xff0c;各个岗…

从EtherCAT到PROFINET,迈威通信带你解锁工业网络!

工业自动化领域&#xff0c;你选对交换机了吗? 在工业自动化和控制系统中&#xff0c;工业以太网协议扮演着至关重要的角色。它们确保了数据在设备间的高效、实时和可靠传输。随着工业4.0的兴起&#xff0c;对不同设备与系统间互联互通的需求不断增加&#xff0c;这就要求现代…

【24华为杯数模研赛赛题思路已出】国赛D题思路丨附参考代码丨免费分享

2024年华为杯研赛C题解题思路 D 题 大数据驱动的地理综合问题 地理系统是自然、人文多要素综合作用的复杂巨系统[1-2]&#xff0c;地理学家常用地理综合的方式对地理系统进行主导特征的表达[3]。如以三大阶梯概括中国的地形特征&#xff0c;以秦岭—淮河一线和其它地理区划的…

数据结构-2.9.双链表

一.双链表与单链表的对比&#xff1a; 二.双链表的初始化(带头结点)&#xff1a; 1.图解&#xff1a; 2.代码演示&#xff1a; #include<stdio.h> #include<stdlib.h> ​ //定义双链表结构体 typedef struct DNode {int data;struct DNode *prior;//前驱指针即指…

初学者的15个Python实用库

Python 是初学者易于学习的一门语言&#xff0c;并且提供了大量的第三方库。超过230,000个用户贡献的包使得Python功能强大且广受欢迎。在本文中&#xff0c;我重点介绍了15个最有用的包&#xff0c;详细说明了它们的功能和特性。 这里插播一条粉丝福利&#xff0c;如果你正在…