当前位置: 首页 > news >正文

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

虽然笔者目前还不知道 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.mrgr.cn/news/31655.html

相关文章:

  • Greenplum 可观测最佳实践
  • 明日周刊-第27期
  • 2024最新 Dev C++下载和安装详细步骤 (带图展示)
  • 利用OpenAI进行测试需求分析——从电商网站需求到测试用例的生成
  • 前端开发中常见的ES6技术细节分享一
  • docker-ce-stable‘ 下载元数据失败 : Cannot download repomd.xml: Cannot download
  • O2O电商系统如何更加数智化
  • 【深度学习】聊一聊正则化
  • ComfyUI 新手指南:看这篇就够了
  • 多模态大模型MiniCPM-V技术学习
  • 【软设】 系统开发基础
  • 2024/9/21 leetcode 21.合并两个有序链表 2.两数相加
  • 【Linux】解锁系统编程奥秘,高效文件IO的实战技巧
  • 口腔检测系统源码分享
  • 大模型,技术场景与商业应用(2024),赋能千行百业产业链升级
  • 【24华为杯数模研赛赛题思路已出】国赛D题思路丨附参考代码丨免费分享
  • Spring Boot赋能高校心理健康教育
  • 第12章 使用Web API控制器创建HTTP API
  • 奇安信渗透2面经验分享
  • 构建高效心理辅导平台:Spring Boot实践
  • Golang | Leetcode Golang题解之第421题数组中两个数的最大异或值
  • SQL 语法学习指南
  • 2024华为杯研赛E题保姆级教程思路分析
  • ThreadLocal引发内存泄漏的原因及解决方案
  • 【CAPL实战】system variables系统变量的基础与应用
  • 九芯电子革新健康检测!语音播报血压计ic芯片解决方案