下面是演示环节,本节起我们开始毕业项目慕课英雄3的开发
首先我们讲解网络游戏账号注册、 登陆功能的实现
我们创建一个新的 Unity 工程 命名为
MOOCHero3 [声响]
创建完毕后,导入我们提供的慕课英雄3初始资源包
MOOCHero3 Init.unitypackage
现在我们已经完成了慕课英雄3初始资源包的导入 让我们打开
GameLobby 场景 可以发现游戏的初始界面发生了变化
游戏首先显示游戏登陆界面 Login Panel
玩家需要登录 账号才可以连接
Photon 服务器进入游戏大厅 在使用
PlayFab之前,我们 需要建立
Unity 游戏客户端与 PlayFab Game Manager 游戏应用的联系
我们在浏览器中打开 PlayFab Game Manager 找到慕课英雄3游戏
记录下有慕课英雄3游戏的 Title ID
接下来我们回到 Unity
编辑器 打开 PlayFabUserData
脚本 [声响]
把慕课英雄3游戏的Title ID
保存在 PlayFabUserData 的 TitleId 字段中
接下来我们打开 CamerasController
脚本 [声响]
该脚本管理游戏界面的初始化,在 Awake
函数中 我们设置 PlayFab 的
TitleId PlayFabSettings.TitleId
设置完成后,在游戏中使用的所有 PlayFab 函数 都默认和这个
TitleId 对应的游戏相关 即 PlayFab Game Manager
中慕课英雄3游戏 接下来我们回到 Unity
编辑器 在我们提供给大家的资源包中
已经完成了游戏登陆界面的制作,接下来我们预览游戏
在游戏登陆的初始界面 LoginMainPanel
包含了账号登录按钮和设备登陆按钮
我们点击账号登录按钮 游戏界面切换到账号登陆面板 LoginAccountPanel
在游戏登陆面板 玩家可以选择输入游戏账号或者邮箱
[空白_录音] 再输入登录密码进入游戏
也可以点击注册按钮,注册游戏账号
我们点击注册按钮,进入账号注册面板 RegisterPanel
在账号注册面板,玩家需要输入游戏账号
绑定邮箱
[空白_录音]
登录密码和确认密码
点击注册按钮,开始游戏账号的注册
账号注册成功后,游戏客户端会自动进入游戏主面板
游戏账号的注册功能我们在 RegisterPanelController
脚本中实现 [声响]
我们为注册按钮绑定了该脚本的 ClickRegisterButton
函数 在该函数中,我们首先对玩家的一些简单非法输入进行检测
例如:玩家未输入的游戏账号 绑定邮箱、
登录密码,或者登录密码与确认密码不一致 这样可以减轻 PlayFab 的压力。
简单的非法输入 检测通过后,我们使用 PlayFab 提供的 API RegisterPlayFabRequest
声明一个账号注册请求 request
相关函数可以打开PlayFab 网站查阅具体的使用方法
该请求包含四个参数:Username 表示账号名
Email 表示账号绑定邮箱 Password
表示登录密码 RequireBothUserNameAndEmail 是一个
word 型参数 该参数如为 true ,表示账号注册请求
中,需要同时包含账号名和账号绑定邮箱 否则注册请求会被 PlayFab 拒绝。
账号注册请求成功 后,我们使用 PlayFabClient API 类的
RegisterPlayFabUser 函数 向 PlayFab Game Manager
发起账号注册请求 该函数包括三个参数
第一个参数是上文声明的账号注册请求 request
第二、 第三个参数均是函数名 当
RegisterPlayFabUser 函数执行成功时
执行第二个参数对应的函数 OnRegisterResult
执行失败则执行第三个参数对应的函数 OnPlayFabError 在
ClickRegisterButton 函数的最后 启用
LoginWindow 显示账号注册中的提示,告知玩家账号正在注册
接下来我们讲解 OnRegisterResult
该函数在 RegisterPlayFabUser
函数执行成功时调用 该函数可以由开发者指定,但是参数必须是
RegisterPlayFabUserResult 表示 PlayFab
请求成功后的返回结果 这里包含了账号注册成功后的账号信息
账号注册成功后会自动登录该账号 我们需要在
OnRegisterResult 完成账号注册登录成功后的操作
首先在本地保存账号,我的 ID 和账号名
其次使用 Photon 的函数连接 Photon
服务器 最后禁用账号登陆中的提示窗口
游戏登陆面板,启用游戏主面板 以上就是账号注册的实现。
玩家账号 注册成功后,我们可以在 PlayFab Game Manager 的 Player
面板 查看和管理账号
接下来我们回到 Unity 编辑器
预览游戏 点击设备登录按钮
此时游戏界面显示设备登陆中的提示按钮
[空白_录音] 设备登陆成功,游戏进入游戏主面板
下面我们停止游戏预览 打开
LoginPanelController 脚本 设备登陆按钮绑定了函数
ClickDeviceLoginButton 在该函数中,我们使用
LoginWithCustomIDRequest 设定一个自定义 ID 登录请求
我们使用设备的标示符 SystemInfo.deviceUniqueIdentifier
作为自定义 ID customID 另外我们设置 CreateAccount 的参数为 true
表示允许玩家使用设备标示符创建一个新的 ID 接下来我们使用
PlayFabClientAPI.LoginWithCustomID 函数,发起自定义
ID 登陆的请求 如果请求通过 PlayFab 的验证,执行 OnLoginResult 函数
若请求未通过 PlayFab 的验证,执行 OnPlayFabError 函数 最后在游戏界面实现设备登录中的文明提示
提示玩家游戏客户端正在使用设备的标示符登陆游戏 和账号制作相同,当玩家登陆成功后,我们在
OnLoginResult 函数中保存玩家账号的 ID 连接 Photon
服务器,但是使用了设备登陆的玩家账号未设置玩家的昵称 在
OnLoginResult 函数中,我们需要为新创建的账号设置昵称 首先根据请求返回结果
Result.NewlyCreated 字段,判断该账号是否是新创建账号
如果是新创建的账号,我们以游客加上玩家账号的 ID 作为
玩家的昵称,使用 UpdateUserTitleDisplayNameRequest 函数
声明更新玩家昵称的请求,该请求的参数是玩家昵称 接下来使用
PlayFab 的客户端 API ,UpdateUserTitleDisplayName
发起更新玩家昵称的请求 请求成功执行 OnUpdateUserTitleDisplayName
,禁用游戏登陆面板,启用游戏 主面板;请求失败,执行 OnPlayFabError
,在控制台输出失败原因 如果账号不是新创建的账号,直接禁用游戏登陆面板,启用游戏主面板
以上就是设备登陆的代码实现 接下来我们返回
Unity 编辑器,预览游戏 进入账号登陆面板
我们发现账号登陆面板的登录按钮,在点击后没有反应 这是我们给大家留的作业,实现玩家账号的登录功能
玩家账号登陆在 LoginAccountController 脚本中实现
我们已经为登录按钮绑定了 ClickLoginButton
函数,请同学们根据作业提示完成相关内容 同学们也可以参照账号注册或设备登陆的流程,或者查阅我们提供的
技术文档完成玩家账号或邮箱登陆的功能
最后我们演示账号登陆成功实现效果 在账号登陆面板,我们可以输入游戏账号或者绑定邮箱
再输入登录密码登陆游戏 在登陆过程中,游戏客户端显示玩家账号正在登陆
登陆成功后,游戏进入游戏主界面
显示游戏大厅;如果登录失败,在界面提示登录失败的原因 以上就是本节演示的全部内容