欢迎大家继续学习网络游戏设计与开发毕业项目 上一节我们使用
PlayFab 实现网络游戏的货币管理 本节我们使用
PlayFab实现网络游戏商城的相关功能 本节将采用
PPT 讲解 + 项目演示的方式介绍网络游戏商城相关的知识要点
在项目演示环节,我们演示了网络游戏商城在慕课英雄 3 项目中的应用
希望大家可以根据自己的专业基础和学习能力情况,从以下 学习方法中选择一种进行学习。
第一种方法,先看 PPT讲解 对相关知识有一个系统的了解,然后观看项目演示视频,学习知识点的应用
第二种方法,先看项目演示视频,了解知识要点的具体应用,再回到 PPT 讲解阶段 有针对性地学习相关知识要点。
第三种方法,跳过 PPT 讲解,直接进入项目演示。
通过理解项目中知识要点的运用 完成相关知识要点的学习,不需回顾 PPT 讲解。
下面我们进入 PPT 讲解阶段
网络游戏中有多种多样的道具,功能迥异的道具 增加了游戏的可玩性。
玩家可以在游戏中购买道具,结合自身的优势搭配使用道具,增强玩家的战斗能力
有些运营商设计的和售卖的道具,增加游戏的盈利 在慕课英雄
3 中,我们使用 PlayFab 实现游戏商城的管理功能 本页 PPT
展示了 PlayFab 实现游戏 商城功能的结构示意图。
我们在 PlayFab 的 GameManager 中定义游戏商城道具的属性
PlayFab 的 GameManager 中存储了每一个玩家的道具列表。
玩家登录账号后 游戏客户端从 PlayFab 的 GameManager 中获取游戏商城的道具信息。
玩家在购买道具后 游戏客户端向 PlayFab GameManager 发起购买道具请求
道具购买成功后,PlayFab GameManager 更新玩家的道具列表
下面我们讲解游戏商城功能的具体实现 首先是游戏道具的管理。
我们在 PlayFab GameManager 的 Economy 页面中完成。
在 Economy 的 Catalogs 选项卡 我们在 Catalogs
中创建一个道具目录 Gunweapon 表示枪械武器的集合。
在 Gunweapon 中 我们定义慕课英雄 3 枪械的种类、 价格以及其它属性
打开 Gunweapon 后,我们发现 Gunweapon
包含五个选项卡,分别为 Item、 Bundle、 Container、 Drop table 和 Store Item 表示游戏中的道具。
开发者在 Items 中定义道具的基本属性和价格 Bundle
是多个道具的集合 玩家得到 Bundle
后会自动打开分为多个道具 加入到玩家的道具列表中。
开发者可以使用 Bundle 实现 道具的打包出售。
Container 是多个道具的集合 玩家得到 Container 后,还需要获得
Container 对应的钥匙 key 才能打开 Container 获取其中的道具。
开发者可以使用 Container 实现游戏中宝箱和钥匙的相关功能 Drop
table 也是多个道具的集合 玩家得到 Drop table
后会随机得到其中的某个道具 开发者可以调整每个道具获取的概率,实现游戏抽奖的相关功能
Store 是 Catalog 的一个子集
开发者可以自定义出出售的道具,重新设置它们的价格 开发者可以使用
Store 实现商店道具特价的功能 在毕业项目中,我们仅使用
Item 完成慕课英雄 3 的游戏道具购买的相关功能
下面我们重点介绍 Item 的相关功能 在
Items 中我们可以创建、 编辑、 删除游戏道具 本页 PPT
展示了游戏道具的部分属性,其中 Item ID 表示道具的标识符 用于区别其他道具。
Item class 表示道具的种类,我们可以根据道具的种类 在游戏中实例化不同的游戏对象。
Display name 表示道具的名称 Description 表示道具的描述。
右侧的 Consumable 表示道具的 使用方式:Durable
表示玩家永久拥有该道具,该道具的使用无限制 By count 表示道具使用次数的有限制;By
time 表示道具有使用时间的限制 下面我们介绍 PlayFab
游戏道具的其他属性 Prices 定义游戏道具的价格。
同一个游戏道具可以使用不同的游戏货币购买 Custom Data
定义游戏道具的自定义属性,使用 Json 的格式存储 我们可以在 Custom Data
定义道具的其他属性,例如枪械的威力、 射速等属性 接下来,大家需要在
PlayFab GameManager 的 Catalogs
选项卡中上传课程资源文件 GunWeapon.Json ,完成慕课英雄
3 游戏道具的设置 GunWeapon.Json 文件中包含三种枪械:AK47、
M4A1 以及 UMP45 [空白_录音]
接下来,我们讲解游戏客户端获取游戏道具信息的实现 在慕课英雄 3
的界面中,玩家点击商城按钮,游戏客户端获取 PlayFab GameManager
中设置的枪械相关数据 把它们显示在游戏商城界面中。
我们在 ShopPanelController 脚本中 实现游戏道具信息的读取与显示。
脚本使用 GetCatalogItemsRequest 声明一个获取游戏道具的请求
该请求的参数是游戏道具的目录及名称 这里我们把参数设置为 Gunweapon。
接下来脚本使用 PlayFab 的 函数 GetCatalogItems 获取 PlayFab
中存储的游戏道具信息 如果信息获取成功,执行 OnGetCatalogItems
函数 该函数实现游戏道具显示的信息。
如果信息获取失败 执行 OnPlayFabError
函数,提示失败的原因 游戏道具获取成功后
游戏商城面板显示游戏的道具的所有信息,玩家可以选 择某个道具,查看道具的详细信息,选择是否购买该道具
我们在 ShopItemDetailsController
脚本中,实现玩家购买游戏道具的功能 脚本使用 PurchaseItemRequest 声明玩家购买道具的请求。
该请求需要设置四个参数 CatalogVersion 表示道具所在的道具目录
VirtualCurrency 表示购买道具使用的虚拟货币 Price
表示道具的购买价格,ItemId 表示道具的标识符 定义购买道具的请求后,脚本使用
PlayFab 函数,PurchaseItem 向 PlayFab GameManager 发出指定道具的购买请求
在玩家创建新账号时 我们需要为玩家添加默认枪械
AK47,确保玩家在战斗中有枪械可以使用 在 AK47 Prices
属性中,购买的游戏货币为 FR,价格为 0 ,表示该武器是免费的
账号注册成功后,游戏客户端使用 PurchaseItem 函数为新创建的账号添加默认枪械道具
AK47 [空白_录音]
玩家购买的道具放置在玩家仓库中,玩家仓库数据保存在 PlayFab GameManager
中 在 PlayFab GameManager 的 Players 页面,开发者可以点击 Inventory
按钮 查看和设置玩家拥有的道具
在游戏客户端中,玩家点击仓库按钮,游戏界面显示玩家拥有的道具
在玩家仓库界面,玩家可以装备任意道具 在游戏中和战斗中使用。
接下来,我们讲解玩家仓库功能的实现 我们在 InventoryPanelController
脚本中实现玩家的仓库管理 脚本使用 GetUserInventoryRequest
声明一个获取玩家仓库信息的请求 请求声明后脚本使用 GetUserInventory 函数向
PlayFab GameManager 发起获取玩家仓库信息的请求 如果玩家仓库信息获取成功,游戏客户端执行
OnGetUserInventory 函数,在玩家仓库界面显示玩家拥有的道具
如果玩家仓库信息获取失败,游戏客户端执行 OnPlayFabError
函数,提示玩家仓库信息获取失败的原因 在游戏的仓库界面
玩家可以选择已拥有的道具进行装备,即可在游戏中使用该道具进行作战 下面我们讲解玩家装备道具和使用道具的实现
本页 PPT 展示了玩家装备道具的代码实现
玩家装备道具的信息需要在游戏客户端中保存 脚本在 PlayFabUserData
类中定义了 equipedWeapon 字段 存储玩家装备道具的信息。
玩家进入战斗后,客户端根据 equipedWeapon 字段的值,为玩家实例化对应的枪械对象
玩家装备道具的信息也需要在 PlayFab GameManager 中保存 我们使用
PlayFab GameManager 的 Player Data 以键值对的形式存储玩家装备的道具
玩家再次登录账号后 游戏客户端从 PlayFab GameManager
的 Player Data 中获取玩家装备道具的信息 玩家切换装备道具时
游戏客户端使用 UpdateUserData 函数,使更新 PlayFab GameManager
中的 Player Data 数据更新玩家装备道具的信息 玩家进入场景后
根据游戏客户端保存的 equipedWeapon 字段实例化相应的枪械
PlayerShoot 脚本的 Init 函数实现玩家枪械的实例化 包括以下三个步骤。
第一个步骤设置枪械的属性,包括射击伤害 射击速度以及射击距离。
第二个步骤,使用 SetActive 方法 启用玩家装备的枪械模型,禁用其他的枪械模型
第三个步骤,设置玩家模型的动画 IK
更新玩家模型持枪的动作 到此为止,我们完成了网络游戏商城的讲解。
下一单元,我们继续使用 PlayFab 编程实现游戏的玩家排行榜、
成就系统以及天赋系统 下面是演示环节
我们使用 PlayFab 实现慕课英雄 3 的网络游戏商城功能