手游实战项目4背包系统.docx
- 文档编号:9392831
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:8
- 大小:16.34KB
手游实战项目4背包系统.docx
《手游实战项目4背包系统.docx》由会员分享,可在线阅读,更多相关《手游实战项目4背包系统.docx(8页珍藏版)》请在冰点文库上搜索。
手游实战项目4背包系统
好了,现在开始万众期待的背包系统。
由于这个背包系统并不是这次系列的主题,可能在设计上有点儿取巧,其实就是懒!
但是也并不是一无是处,应该还是能用的。
呵呵。
。
。
背包系统和道具系统一样主要分成两个部分,第一部分就是道具槽,或者道具格,就是存放单个道具的那个东西,第二部分就是管理器(这个东西貌似哪里都需要,呵呵),就是背包了,就是我们今天的重点了。
另外有个好消息,今天继续有Editor编程。
文章来自【狗刨学习网】
=================道具槽=================
道具槽,指定动作,新建C#脚本,重命名 Inventory_Slot,并实现IComparable
接口,用于排序。
变量:
item_id 记录道具的ID
current_stack 当前的堆栈数
函数:
Inventory_Slot(intitemID) 构造函数,保证每个slot记录的都是都是有意义的道具,我们歧视无意义的Slot!
!
public boolWithdraw() 取出,或移除1个道具,如果事后堆栈数小于等于0,返回true,通知管理器删除这个Slot。
public boolDeposit() 存入,或增加1个道具,如果事前堆栈数到达最大值,则无法存入,返回false,通知管理器。
public boolFull_Stack() 判断当前堆栈数是否达到最大值。
public intCompareTo(Inventory_Slotx) 用于排序用的,这个可以根据实际需要编写。
好了,简单易懂吧,这就是道具槽,道具槽用于管理同一个格子的道具,主要就是管理堆栈数的问题而已。
好了,下面开始管理器设计。
=================管理器=================
管理器,制定动作,新建C#脚本,重命名Inventory_Manager。
同样,设计成单例模式。
变量:
money 记录玩家的金钱,如有需要,可以添加更多的种类,或类WOW的各种货币。
player_inventory 玩家身上的背包。
store_inventory 仓库。
shop_inventory 商店,这样设计其实是不对的,这里主要为了测试方便而设计的。
[size=13.63636302948px]player_inventory_limit,store_inventory_limit,shop_inventory_limit 背包的道具槽上限。
角色装备的ID,如果只要一个主角的话,可以将其设计成单例,所以一同写进管理器。
#regionEquipment
publicint
equipmentID_Main_Weapon=-1,
equipmentID_Second_Weapon=-1,
equipmentID_Shield=-1,
equipmentID_Head=-1,
equipmentID_Shoulder=-1,
equipmentID_Belt=-1;
//addmoreequipmenthere...
#endregion
背包种类的枚举,这个地方就是我所说的取巧的地方了,详细可以翻看代码。
enumInventory_Type
{
Player,
Store,
Shop
};
函数:
publicstatic Inventory_ManagerGet_Manager() 这个方法同道具管理器的一样,获取管理器的实例。
public boolDeposit(int itemID,Inventory_Typetype) 存入道具,道具ID,目标背包(玩家,仓库,商店),若目标背包堆栈达到上线,存入失败,返回false。
public boolWithdraw(int itemID,Inventory_Typetype) 取出道具,道具ID,和源背包(从哪个背包里取出),查无此道具则取出失败,返回false。
public boolWithdraw_at_slot(int slotID,Inventory_Typetype) 从指定道具槽取出道具,槽ID,源背包,槽不存在则返回false。
public intGet_Current_Stack(int slotID,Inventory_Typetype) 获取当前道具槽的堆栈数,槽ID,源背包。
public void Sort(Inventory_Typetype) 目标背包的道具重新排序。
管理器代码部分完成,好了,返回到Scene,新建空GameObject,重命名Inventory_Manager和tag改名为InventoryManager。
保存成prefabs,然后千万不要忘记上篇的那个伟大的Global_Manager,将背包的prefabs拖到Global_Manager的正确位置,
好了,伟大的背包系统设计好了,一如既往,奖励部分,这次提供的一个测试单元,用于测试目前的背包系统和道具系统相结合的一个简单单元。
=================测试单元=================
新建C#脚本,重命名为Unit_Inventory_Manager,
变量:
int itemID 要测试的道具ID
public Inventory_Manager.Inventory_Typeinventory_type
要测试的目标背包(玩家,仓库,商店)
Item_ProfileitemInfo 道具信息,这个不需要赋值,这个根据所测试的道具ID,系统会自动复制,只要用于快速定位目标道具而已,方便在Project视图中定位而已,可无视之。
函数:
publicvoid Deposit() 向目标背包存在测试道具。
publicvoid Withdraw() 从目标背包取出测试道具。
publicvoid Show_Info() 显示/更新要测试的道具的Item_Profile文件。
然后将此脚本挂在到Inventory_Manager对象下,然后配合茶水给出的Unit_Inventory_Manager_Editor(不需要挂载在任何地方,让他静静的呆在文件夹里就好了),如效果图。
点击运行,然后点击UnitXXX的按钮,看看背包里的数据,我们的背包和道具系统能正常互动了!
!
好也!
======================================
好了,道具系统的核心部分的设计全部完成了。
下篇开始就要开始万众期待的UI设计了,这将会是个漫长而痛苦的过程,先上个图吓唬吓唬你们,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实战 项目 背包 系统