SIKI笔记之背包系统

UICamera.hoveredObject 鼠标的位置有没有ui物体,没有为null。
TextAssets类。读取文件
byets 字节读取
string 读取为字符串

装备读取:
1、创建Txt文档,存储物品信息.(按照固定的格式)
2、创建物品信息管理类,管理物品,创建单个物品的类,存储每个物品的属性
1)、TextAssets 类存储整个文档;
2)、根据换行符读取每一个物品的所有信息;
3)、根据每一条信息的逗号以及固定格式的位置来区分物品的每一条属性
4)、创建字典,ID为键,其他属性为值,遍历添加到字典中(Dictintory类,在
System.Collections.Generic);


物品属性设计:
类型:
药品:Drug;
装备:Equip;
材料:Mat;
1、药品
ID 类型 名称 icon_name MP回复量 HP回复量 购入价 卖出价
1001 Drug 血药 20 0 10 50 30
1002 Drug 蓝药
43 20 0 70 40
2、装备
ID00 类型01 名称02 icon_name03 防御值04 增加HP上限05 增加MP上限06 攻击力07 移动速度08 购入价09
卖出价10 部位11
2001 Equip 头盔1 531 10 100 60 10 0 800 500 头盔
2002 Equip 头盔2 533 15 200 20 8
0 800 500 头盔
2003 Equip 衣服1 55 30 300 100 0 0 1000 800 衣服
2004 Equip 衣服2 49 25 500 50 0 0
1000 800 衣服
2005 Equip 护腕1 641 25 0 0 10 0 500 300 护腕
2006 Equip 护腕2 642 20 0 0 15 0 500
300 护腕
2007 Equip 鞋子1 646 10 0 0 0 10 500 300 鞋子
2008 Equip 鞋子2 647 10 0 0 0 10 500 300 鞋

2009 Equip 首饰1 671 0 0 0 15 0 550 330 首饰
2010 Equip 首饰2 672 0 0 0 15 0 550 330 首饰
2011
Equip 造化异轨 717 0 200 0 100 0 1300 1000 武器
2012 Equip 青玉流 695 0 0 200 120 0 1300 1000 武

3、物品
ID 类型 名称 icon_name 购入价 卖出价
3001 Mat 材料1 91 10 8
3001 Mat 材料2 94 15 10
4、创建格子信息类和存储所有网格的管理类
格子信息类:存储每个网格的信息
格子的信息:1、数量
2、物品ID(无则为0)
3、物品信息(无则为null)
4、清空格子信息的方法
//5、通过ID显示图片的方法(物品自身)
5、通过物品数量更改UI界面物品数量的方法
所有格子的管理类:
1、所有格子的List
2、添加物品的方法
方法:
当前格子有物品,ID相同,更改当前格子类的数量累加
当前格子有物品,ID不同,跳过
当前格子无物品,更改当前格子类的信息,传入ID、物品信息、物品数量
3、检测格子是否有物品,有就显示物品数量,没有就关闭物品数量的显示

5、控制物品描述信息
1、创建物品描述面板
2、创建物品控制脚本,并单例
3、根据当前格子的ID显示相应ID的物品信息的方法;
4、描述面板隐藏的方法


知识点:面板跟随鼠标移动
1、SIKI教程:物品添加Event Listener 脚本(成为发送者)再添加 Event Trigger 脚本,通过
绑定方法的形式触发
Event Trigger 下可以绑定的方法:
On HoverOver(鼠标悬停在物品上面会执行该绑定的方法)
OnHoverOut(鼠标不在物品上面,会执行N次该绑定方法)
2、优化:NGUI事件:OnHover(bool b)
该事件方法会得到2个结果,NGUI内部会调用这个方法,传入bool值,b会接收。
b为True:鼠标在物品上的那一帧;
b为False:鼠标离开物品上的那一帧;
6、物品拖拽、交换处理
1、通过UIDragDropItem类继承鼠标拖拽方法,在方法里面添加修改的处理
2、OnDragDropStart(物品被拿起的那一帧):添加存储父物体的引用,清除网格里面的ID和Sum信息(网格
里面的clear方法),物体的位置跟随鼠标移动
3、OnDragDropRelease(物品放下的那一帧,方法会有一个形参,系统会再触发这个事件的同同时,传入鼠标
放下将会碰到的物体的gameobject):
3种可能:
1、是格子(格子为空,所以碰到的是格子),物品自身也需要带有sum属性, ID属性
,赋值给目标格子,用以显示格子下方的数量、和格子存储的ID。
2、有物品(碰到的是物品,通过tag、物品信息皆可判定):设置自身的父物体为对方的父物体,相对父物体
的位置信息归零(localpostion),对应物体设置相应的格子的ID和Sum属性;
3、其他位置:复位物体,重新设置父物体的ID和Sum属性

7、NPC商人:药品商人
购买药水,与武器、材料NPC可共用脚本:
1、读取文本,调用ObjectManager的单例,获取所有物品的哈希表,存储药水类
2、在网格生成获取到的所有药品
3、右键购买的方法
方法:右键点击,背包的sum+1,金币-N
Shift+右键,背包的sum+10,金币-n*10(如果有兴趣可设计输入面板,购入自定义数量的物品)
4、金币不足,无法完成购买,并显示相应UI

装备穿戴:
1、设置一个装备穿戴栏专用的预制体
2、右键点击包裹的装备,检测装备的穿戴类型,在相应部位生成预制体
3、点击包裹装备的时候,将info也传给预制体,预制体需要有通过info来改变sprite的方法

posted on 2019-02-27 22:08  年轮下的  阅读(269)  评论(0编辑  收藏  举报

导航