博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3D 装备系统学习Inventory Pro 2.1.2 总结
阅读量:6935 次
发布时间:2019-06-27

本文共 1770 字,大约阅读时间需要 5 分钟。

前言

      写在最前面,本文未必适合纯新手,但有一些C#开发经验的还是可以看懂的,虽然本人也是一位Unity3D新人,但是本文只是自己在学习Inventory Pro的学习总结,而不是教程,本人觉得要读懂理解Inventory Pro 2.1.2 这样的插件源码,你还是需有了一部分Unity3D的基础知识。但为什么说你有一定C#开发经验也是能看懂的呢?(有点绕),我想表达的意思是,Unity3D无非是一种技术或者工具,而装备系统是游戏逻辑的一种业务,其实如果侧重点在于业务,技术和工具不是那么重要,希望你能明白这一点。

      还有毕竟本人也是新手,对于源码的理解难免有偏差、理解不够透彻的地方,欢迎大家指正和讨论。

      本次学习总结的思路大概是从总体到细节的过程,具体是先从装备系统的总体设计,主要功能页,类图结构到最后的关键细节函数实现这个路线。

总体结构

     本来想取一些效果截图,发现在5.2.3版本有些部分有编译错误,就不贴出来了

     从类图体系来分,就目前阅读该插件的代码部分,结构划分还是很清晰,命名比较规范,注释也很到位(老外确实不一样),基本是有几个类体系结构

物品相关

非UI相关InventoryItem 物品体系类,具体如装备,消耗品,商店物品等

UI相关InventoryUIItemWrapper 物品体系

UI窗口相关

UIWindow体系的窗口类,具体有角色,银行,技能,店铺等窗口

InventoryUIDialog系统下的对话框类,具体有确认框,买卖,通用提示

特殊窗口(非继承体系窗口),如上下菜单,通知窗口等

管理相关类

配置管理

InvertoryManager

ItemManger

数据库操作

其它

应该是一些辅助类,有UI部分的,事件辅助,定义接口等等吧,这部分还没有深入去阅读应该也是挺复杂的

剩下部分

一些第三方插件,Unity3D特性及Edit扩展等等

代码导航图,由于图片大小问题只展开了关键部分的类,感兴趣自己看源码 如下图所示:

具体类图就截取两个充充场面,这里需要注意的由于Unity3D是基于组件开发模式的,有时候可能会出现桥接模式,这样类图如果展现出来会很大,所以这里只是给出了两个比较清晰的继承体系,如下图所示

 

总结

      通读了目前Inventory Pro 2.1.2的源码,对于装备系统有了一个比较直观的了解,大致总结一下

  1. 物品相关,数据模型就是非UI的Item继承体系很容易理解了,就是各种装备,物品,血瓶之类的纯数据,UIItem的UI包装的Item继承体系这个也是很容易理解的,毕竟要用于显示,有名称,材质,动画等等效果了,这些类也比较单纯,比较复杂的是Item的集合类,ItemCollection这样的类,因为简单的增、删和改肯定是逃不了,复杂的如交换,容器间的交换等操作;
  2. UI窗口相关,毕竟装备系统少不了显示,这样就涉及到UI部分的,这样就需要一套通用的UIWindow(窗口类),UIDialog(对话框类),及一些特殊的窗口吧,这些通用的还算简单,复杂的主要是装备容器也就是ItemCollection与窗口UI的组合类,毕竟有很多格子,再复杂一些还有重量和摆放等逻辑;
  3. UI事件相关的,这一部分就复杂一些了,毕竟UI都是事件驱动的,比如物品拾取,销毁,交易,拖拽等都需要事件来做,再加上使用UI引擎相关有碰撞、射线计算,动画效果等等吧,需要对Unity3D还是要有一定了解的,不然一头雾水;
  4. 管理调度及其它,主要是一些辅助的类,这部分也比较多,比如数据库模拟、多语言,声音,全局配置什,集成包装调用什么的也不简单。

     整体来说Inventory Pro 2.1.2,还是做的很全面的,还有Demo,毕竟是收费插件,也算是个小型的系统了,至少是提供了一个可行的装备系统解决方案,本来也看过一些国人分享的装备系统程,往往停留在Unity3D UI那层的学习和使用,其实远没有到一个解决方案的级别,基本是入门而已吧。

 

最后

     如果你对本文感兴趣,觉得对你的工作和学习有点用处可以扫二维码打赏,或者残忍忽略。当然如果你有什么问题或者需要指正的欢迎交流。首发博客园,蛮牛

转载于:https://www.cnblogs.com/IlidanStormRage/p/5739863.html

你可能感兴趣的文章
OGG_GoldenGate数据表定义方式DEFGEN(案例)
查看>>
使用jQuery获取radio/checkbox组的值的代码收集
查看>>
计算机:2014考研大纲全面解析
查看>>
linux下系统启动时,几个配置文件 /etc/profile、~/.bash_profile 等几个文件的执行过程,先后顺序...
查看>>
[Android]对BaseAdapter中ViewHolder编写简化
查看>>
php 5.3新特性
查看>>
微信公共服务平台开发(.Net 的实现)3-------发送文本消息
查看>>
Android Http请求方法汇总
查看>>
[物理学与PDEs]第3章第3节 电导率 $\sigma$ 为无穷时的磁流体力学方程组 3.2 向量场过任一随流体运动的曲面的通量对时间的微式及其应用...
查看>>
C#中MessageBox.Show()方法详解
查看>>
Oracle中 HWM与数据库性能的探讨
查看>>
NGUI图集切割代码
查看>>
Bootstrap模态框(modal)垂直居中
查看>>
iOS中NSBundle的使用
查看>>
jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动
查看>>
CSS3+HTML5特效9 - 简单的时钟
查看>>
webservice调用的四种方式
查看>>
警报级别
查看>>
ffmpeg 从内存中读取数据 .
查看>>
在Linux Bash通过上下键快速查找历史命令
查看>>