通用窗口类 Inventory Pro 2.1.2 Demo1(中)
本篇想总结的是Inventory Pro中通用窗口的具体实现,但还是要强调下该插件的重点还是装备系统而不是通用窗口系统,所以这里提到的通用窗口类其实是通用装备窗口类(其实该插件中也有非装备窗口比如NoticeUI等)。
本篇涉及的功能用加出标出,具体的功能如下:
1、实现了两个窗口,通过点击键盘I来,打开或者关闭窗口也就是Toggle功能
2、装备窗口中的物品栏空格数量动态生成可控,可以在属性窗口手动配置
3、窗口具有拖拽功能
4、窗口物品具有拖拽,及窗口间拖拽
5、可以在窗口使用物品的功能,物品有消耗扇形显示功能
6、通用窗口的类体系结构
具体的插件使用和功能已经在上篇中说明了这里就不多说了
1、本篇重点分析 6通用窗口的类体系结构,类组织和类图如下所示:
类的继承体系结构这里就说了,在第一篇有可以自行查阅
类的引用关系、核心字段和方法已经在类图中标记的很清楚,用简单的几句话说明下,装备窗口中的每个格子是由一个空格子具有背景的UIItem和InventoryItemBase Model组成的,而整个装备窗口是一个InventoryUI,该类继承了ItemCollectionBase类,也就是说它是具有一组UIItem的装备集合窗口,添加上UIWindow组件、DraggableWindow就具有了普通窗口的拖拽移动和显示关闭的功能了。
2、装备窗口中的物品栏空格数量动态生成可控,可以在属性窗口手动配置
如何实现动态装备窗口主要有两个核心技术:一个是UI中的自适应排列,也就是Grid layout Group组件;一个是U3D的prefab实例化技术
动态初始化Cell数据核心代码如下
1 protected virtual void FillUI() 2 { 3 if (manuallyDefineCollection == false) 4 { 5 items = new InventoryUIItemWrapperBase[initialCollectionSize]; 6 7 // Fill the container on startup, can add / remove later on 8 for (uint i = 0; i < initialCollectionSize; i++) 9 { 10 items[i] = CreateUIItem<InventoryUIItemWrapper>(i, itemButtonPrefab != null ? itemButtonPrefab : InventorySettingsManager.instance.itemButtonPrefab); 11 } 12 } 13 else 14 { 15 for (uint i = 0; i < items.Length; i++) 16 { 17 items[i].itemCollection = this; 18 items[i].index = i; 19 } 20 } 21 } 22 23 protected T CreateUIItem<T>(uint i, GameObject prefab) where T : InventoryUIItemWrapperBase 24 { 25 T item = GameObject.Instantiate<GameObject>(prefab).GetComponent<T>(); 26 item.transform.SetParent(container); 27 item.transform.localPosition = new Vector3(item.transform.localPosition.x, item.transform.localPosition.y, 0.0f); 28 item.itemCollection = this; 29 item.transform.localScale = Vector3.one; 30 item.index = i; 31 32 return item; 33 }
是不是很简单 initailCollectionSize是InventoryUI基类的一个共有field也就是说这个装备格子的数量,这个可以根据自己设计的装备窗口手动设置,然后根据这个循环调用CreateUIItem<T>泛型方法通过,GameObject.Instantiate动态实例化预设装备格子对象,并设置Parent和位置,在我看来Prefab的 GameObject.Instantiate实际是一种深克隆(如果理解错了欢迎大家拍砖)
转载于:https://www.cnblogs.com/IlidanStormRage/p/5780372.html
通用窗口类 Inventory Pro 2.1.2 Demo1(中)相关推荐
- 通用窗口类 Inventory Pro 2.1.2 Demo1(下)
本篇想总结的是Inventory Pro中通用窗口的具体实现,但还是要强调下该插件的重点还是装备系统而不是通用窗口系统,所以这里提到的通用窗口类其实是通用装备窗口类(其实该插件中也有非装备窗口比如No ...
- 【Unity3D插件】Inventory Pro插件分享《游戏背包系统》
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 一.前言 发现就喜欢研究这些插件,为什么呢,因为方便快捷啊.基本不用研究源代 ...
- Unity3d UGUI 通用Confirm确认对话框实现(Inventory Pro学习总结)
背景 曾几何时,在Winform中,使用MessageBox对话框是如此happy,后来还有人封装了可以选择各种图标和带隐藏详情的MessageBox,现在Unity3d UGui就没有了这样的好事情 ...
- 第七章:无模式对话框 和 Windows通用对话框类
第七章:无模式对话框 和 Windows通用对话框类 1,[无模式对话框]在它处于激活状态下还允许用户在(同一个应用程序中)其它地方工作. [通用对话框]则是C++和一组Windows的实用对话框之间 ...
- 注册窗口类 registerclass
window把窗口以不同的类别进行设计,通过不同的类别来管理不同的资源,体现模块化管理的思想.以mfc为例Button类别有ccheckbox,cbutton,radiobutton等 ,Static ...
- Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇
前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...
- php分页类示例下载,PHP 通用分页类的简单示例
这篇文章主要为大家详细介绍了PHP 通用分页类的简单示例,具有一定的参考价值,可以用来参考一下.对PHP通用分页类感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 写了个php的通用分页类 ...
- win32开发(窗口类和窗口)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 之前虽然也编写win32代码,比如使用visual studio自动生成的win32框架.但是对 ...
- 窗口句柄、窗口类对象的关系
HWND hwnd://窗口句柄 CWnd wnd://窗口类对象 窗口类对象中有一个成员是窗口句柄. 窗口句柄,提供了窗口的一个标识,类似于指针的概念,每一个窗口都对应了一个窗口句柄作为其标识,通过 ...
最新文章
- 2022-2028年中国香薰行业市场研究及前瞻分析报告
- 码教授告诉你人工智能如今涉及的领域你无法想象
- 记录避免一些逻辑问题的过程
- SRM 440(1-250pt, 1-500pt)
- a jquery 标签点击不跳转_form标签的action属性怎么用?form标签action属性的用法介绍(附实例)...
- linux下软件发布,Linux Kernel 5.12发布下载,附新特性及新功能介绍
- Redis:Cannot assign requested address的解决办法
- uniapp ---- 树组件
- 泛泰A870S官方4.4.2系统S0218210 内核版本号信息
- Physics Bodies(中文翻译)—UE4官方文档
- 浏览器插件Octotree的下载安装
- Excel怎么对比两个表格数据
- WiFi基础知识解析
- 【论文精读1】CSDI: Conditional Score-based Diffusion Models for Probabilistic Time Series Imputation
- 面试技巧之如何面试与如何应试
- linux scp 输入密码,scp 在脚本中使用输入密码的解决方法
- 如果感觉没有动力或是心情很失落,那就听听战歌吧!(可免费下载)
- 华为手机自带邮箱如何添加新浪邮箱账号
- 传输线设计的参量解析
- 在word如何显示左侧的索引目录