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

QFramework v1.0 使用指南 更新篇:20240918. 新增 BindableList

20240918. 新增 BindableList

BindableProperty 很好用,但是不支持 List 等集合。

而 Bindable List 功能群友呼吁了很久了。

应群友要求,笔者实现了 Bindable List。

基本使用方式如下:

using System;
using UnityEngine;
using UnityEngine.UI;namespace QFramework.Example
{public class BindableListExample : MonoBehaviour{private BindableList<string> mNameList = new BindableList<string>();public Text NameTextTemplate;public Transform ContentRoot;private void Start(){NameTextTemplate.Hide();mNameList.OnCountChanged.Register(count =>{print("count:" + count);}).UnRegisterWhenGameObjectDestroyed(gameObject);mNameList.OnAdd.Register((index, newName) =>{print("add:" + index + "," + newName);NameTextTemplate.InstantiateWithParent(ContentRoot).SiblingIndex(index).Show().text = newName;}).UnRegisterWhenGameObjectDestroyed(gameObject);mNameList.OnMove.Register((oldIndex, newIndex, nameItem) =>{print("move:" + oldIndex + "," + newIndex + "," + nameItem);ContentRoot.GetChild(oldIndex).SiblingIndex(newIndex);}).UnRegisterWhenGameObjectDestroyed(gameObject);mNameList.OnRemove.Register((index, nameItem) =>{print("remove:" + index + "," + nameItem);ContentRoot.GetChild(index).DestroyGameObjGracefully();}).UnRegisterWhenGameObjectDestroyed(gameObject);mNameList.OnReplace.Register((index,oldName, newName) =>{print("replace:" + index + "," + oldName + "," + newName);ContentRoot.GetChild(index).GetComponent<Text>().text = newName;}).UnRegisterWhenGameObjectDestroyed(gameObject);mNameList.OnClear.Register(() =>{print("clear");ContentRoot.DestroyChildren();}).UnRegisterWhenGameObjectDestroyed(gameObject);}private string mNameToRemove = null;private void OnGUI(){IMGUIHelper.SetDesignResolution(640,360);GUILayout.Label("count:" + mNameList.Count);GUILayout.BeginVertical("box");foreach (var nameItem in mNameList){GUILayout.BeginHorizontal("box");GUILayout.Label(nameItem);if (GUILayout.Button("-")){mNameToRemove = nameItem;}GUILayout.EndHorizontal();}if (mNameToRemove.IsNotNullAndEmpty()){mNameList.Remove(mNameToRemove);mNameToRemove = null;}GUILayout.EndVertical();if (GUILayout.Button("add")){mNameList.Add("liangxie" + UnityEngine.Random.Range(0,100));}if (mNameList.Count > 0){if (GUILayout.Button("remove at 0")){mNameList.RemoveAt(0);}if (GUILayout.Button("replace at 0")){mNameList[0] = "replaced name" + UnityEngine.Random.Range(0, 100);}if (mNameList.Count > 1){if (GUILayout.Button("move 0 -> 1")){mNameList.Move(0, 1);}}if (GUILayout.Button("clear")){mNameList.Clear();}}}}
}

运行结果如下:

bindable_list

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商
  • Python爬虫解析工具之xpath使用详解
  • 从0开始学ARM
  • 【VitualBox】VitualBox的网络模式+网络配置
  • 情感类智能体——你的微信女神
  • 防火墙配置变更管理
  • 基于JAVA+SpringBoot+Vue的智能无人仓库管理
  • C++初阶学习——探索STL奥秘——反向迭代器
  • C++初阶学习——探索STL奥秘——标准库中的priority_queue与模拟实现
  • 【正负交替的分数求和】
  • OpenAI GPT o1技术报告阅读(3)-英文阅读及理解
  • 浅谈C++调用COM组件
  • 每日刷题(算法)
  • 论文阅读-《Attention is All You Need》
  • android13隐藏桌面底部白线
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • FineReport中如何实现自动滚屏效果
  • JavaScript设计模式之工厂模式
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • SpingCloudBus整合RabbitMQ
  • tab.js分享及浏览器兼容性问题汇总
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • Zepto.js源码学习之二
  • 简单基于spring的redis配置(单机和集群模式)
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 我的面试准备过程--容器(更新中)
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • # Apache SeaTunnel 究竟是什么?
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (4)事件处理——(7)简单事件(Simple events)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (笔试题)合法字符串
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (四)linux文件内容查看
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)平衡树
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Core中Emit的使用
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .Net FrameWork总结
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET项目中存在多个web.config文件时的加载顺序
  • @Bean注解详解
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ SNOI 2013 ] Quare
  • [16/N]论得趣
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [C#] 我的log4net使用手册