看了一下Epic商店的插件,价格都比较贵,当然,插件贵有贵的道理:
优秀的插件应该具备上述的三种特质,所以开发一款插件很考验设计和实现能力,在设计上应该考虑到解耦,易用,扩展性,实现的时候要充分利用接口的特性.
这个专栏就是针对插件开发来写的,在开发商店和背包的插件过程中,笔者积累了不少心得,尤其是关于UE5 C++的使用,关于接口的实战应用,代理声明,绑定和触发,消息监听,广播和注销,ListView的使用等等,大量的干货!
商店背包插件1.0
图片看不清的话,可以跳转到源文件:游戏商店和背包设计.
游戏商店和背包插件作为第一个案例,实现的功能如下:
这个大纲和上面的思维导图是一样的,只是形式不同,思维导图更加容易看清楚结构,开发大纲更容易根据大纲来逐项完成开发.
●物品:Item
●物品配置:FItemTable
●编号:ID
●价格:Price
●库存:Stock
●物品定义接口:IItemDefinitionInterface
●显示名称:DisplayName
●物品类型:FGameplayTagContainer
●显示图标:FSlateBrush
●简介:Introduction
●最大数量:MaxCount
●可叠加数量:Overlap
●物品重量:Gravity
●子类数组:Children
●标签栈:TMap
●耐久度:Durability
●子弹数量:Ammo
●可扩展
●物品实例:UItemInstance
●全局编号:GUID
在生成实例时赋予实例全局唯一编号FGuid
●物品编号:ItemID
●实例索引:Index
●物品定义:ItemDefinition
●标签栈:FGameplayTagStackContainer
●标签:FGameplayTag
●栈数:StackCount
●快捷栏配置:FQuickBarConfiguration
●等级:Level
●容量:Volume
●负重:Gravity
●升级消耗:UpgradeCost
●背包数据结构:Inventory
●背包配置:FInventoryConfiguration
●等级:Level
●容量:Volume
●负重:Gravity
●升级消耗:UpgradeCost
●背包列表:FInventoryList
●条目:Entries
●条目结构:FInventoryEntry
●物品实例:UItemInstance
●数量:StackCount
●所属组件:OwnerComponent
●操作:Actions
●增:AddEntry
●删:RemoveEntry
●改:UpdateEntry
●查:FindEntry
●交换:Swap
●广播:Broadcast
●同步序列化:FFastArraySerializer
●游戏实例子系统:UGameInstanceSubsystem
●消息:MessageSubsystem
●监听消息:RegisterListener
●广播消息:BroadcastMessage
●注销消息监听:Unregister
●商店:ShopSubsystem
●背包配置
●读取
●缓存
●查询
●快捷栏配置
●读取
●缓存
●查询
●物品配置
●读取物品配置表:ReadDataTable
●物品数据表缓存:SlotTablePtr
●根据编号获取物品数据:GetItemDataByID
●物品数据数组缓存:CacheSlotTables
●交易
●交易监听句柄:TransactionListenerHandle
●交易处理:OnNotificationTransactionMessage
●管理组件基类:UActorComponentBase
●钱包:UWalletActorComponent
●货币:Gold
●支付能力:CanAfford
●交易:Transaction
●商店:UShopActorComponent
●商店视觉实例:ShopPtr
●显示商店:ShowShop
●变更店主:ChangeOwner
●背包:UInventoryManagerActorComponent
●背包配置:FInventoryConfiguration
●等级:Level
●容量:Volume
●负重:Gravity
●升级消耗:UpgradeCost
●物品列表:FInventoryList
●目录:Categories
●标签:CategoryStatTags
●实例:CategoryArray
●升级窗口:UpgradeWindow
●操作:Actions
●增:AddItem
●删:RemoveItem
●改:UpdateItem
●查:FindItem
●交换:SwapItem
●同步:ReplicateSubobjects
●快捷栏:UQuickBarComponent
●快捷栏配置:FQuickBarConfiguration
●等级:Level
●容量:Volume
●负重:Gravity
●升级消耗:UpgradeCost
●栏位:Slots
●激活的索引:ActiveSlotIndex
●操作:Actions
●增:AddItem
●删:RemoveItem
●改:UpdateItem
●查:FindItem
●装备:Equip
●卸装:UnEquip
●升级窗口:UpgradeWindow
●视觉展示:View
●商店视图:ShopView
●商品分类:Categories
根据标签动态生成
●商品列表:ItemList
●合成面板:UItemCompoundPanel
●线条:Lines
●物品:Items
●背包:Inventory
●货币数量:GoldNumber
●物品分类:Categories
●物品列表:ItemList
●背包容量:Volume
●背包负重:Gravity
●监听数据变化:Listeners
●快捷栏:QuickBar
●货币数量:GoldNumber
●物品列表:ItemList
●监听数据变化:Listeners
●激活的物品:ActiveItem
●物品单元:ItemSlotBase
●商品:ShopItem
●背包物品:InventoryItem
●快捷栏物品:QuickBarItem
●合成物品:CompoundItem
●提示信息:Tips
●名称:Name
●描述:Description
●价格:Price
●词缀列表:Affix
●词缀
●数量
●监听
●交互确认:ConfirmWindow
●文本:Text
●标题:Title
●物品价格:PriceText
●物品名称:ItemName
●物品数量:CountSlider
●按钮:Button
●确认:Confirm
●取消:Cancel
●升级窗口:UpgradeConfirm
●文本:Text
●标题:Title
●当前等级:CurrentLv
●下一等级:NextLv
●升级价格:PriceText
●按钮:Button
●确认:Confirm
●取消:Cancel
当然这个插件还没有完全开发完成,所以还有一个代办清单:
这些都是要在后面逐步实现并更新的.
那么订阅这个专栏可以得到什么?
这个专栏的价格比较高,一方面是因为参照了Epic商店对应类型的价格,所以希望可以给到大家一个合理的定价;另一方面是笔者现在开发独立游戏资金不足,所以想通过知识分享和付费来解决资金困难,希望大家多多支持;最最主要的是这个专栏的定价有助于提升其质量,笔者一定要对得起大家的每一分钱,所以是物超所值的.