此快速入门可帮助您使用 Defold 进行首次 PlayFab API 调用。
您必须有 PlayFab 开发者帐户才能调用 PlayFab API。
Defold 项目设置
操作系统:本指南适用于 Windows 10。 它也应该适用于 Mac。
创建帐户并下载 defold,或登录 https://www.defold.com/(使用 Google O-Auth):https://d.defold.com/stable/。
如果尚未完成 Defold“入门教程”,请立即完成该教程。
在 Defold 仪表板上创建新项目,如下所示。
- 运行 Defold,然后加载新项目。 可以看到几个类似于以下示例的窗口。
更新项目设置,在依赖项中包含 PlayFab:
https://github.com/PlayFab/LuaSdk/raw/master/Defold/PlayFabClientSdk.zip
- 选择:项目 ->提取库,可以看到新的内置“PlayFab”文件夹,如下所示。
创建几个文件:
main/PfGettingStarted.gui
右键单击“main”文件夹 ->新建 ->Gui 文件 ->PfGettingStarted.gui。
main/PfGettingStarted.gui_script
右键单击“main”文件夹 ->新建 ->Gui 脚本文件 ->PfGettingStarted.gui_script。
在 main.collection 中挂钩新 GUI。
双击 main.collection 以打开它。
在 Outline 面板中:
- 右键单击 Add Game Object(可以重命名为 PfGui)。
- 右键单击新对象,选择 Add Component From File...
- PfGettingStarted.gui(上面创建的)。
- 右键单击新对象,选择 Add Component From File...
- 右键单击 Add Game Object(可以重命名为 PfGui)。
查看 main.collection 的 Outline 面板应类似于下面的示例。
PlayFab 安装已完成。 此项目尚未准备好进行生成,但我们会在下一步中解决该问题。
设置您的首次 API 调用
本指南将提供进行首次 PlayFab API 调用的最少步骤。 游戏窗口中将显示确认。
在 Defold 编辑器中,双击 PfGettingStarted.gui_script。
这会打开文件以进行文本编辑。
更新 PfGettingStarted.gui_script 的内容,如下所示。
注意
要查找该示例中 loginRequest 对象的正确格式,请参阅 LoginWithCustomID 的 API 参考。
local PlayFabClientApi = require("PlayFab.PlayFabClientApi")
local IPlayFabHttps = require("PlayFab.IPlayFabHttps")
local PlayFabHttps_Defold = require("PlayFab.PlayFabHttps_Defold")
IPlayFabHttps.SetHttp(PlayFabHttps_Defold) -- Assign the Defold-specific IHttps wrapper
PlayFabClientApi.settings.titleId = "144" -- Please change this value to your own titleId from PlayFab Game Manager
function init(self)
local loginRequest = {
-- See the API reference for LoginWithCustomID
TitleId = PlayFabClientApi.settings.titleId,
CustomId = "GettingStartedGuide",
CreateAccount = true
}
PlayFabClientApi.LoginWithCustomID(loginRequest, OnLoginSuccess, OnLoginFailed)
end
function OnLoginSuccess(result)
local pfTestOutput = gui.get_node("pfOutput")
gui.set_text(pfTestOutput, "Congratulations, you made your first successful API call!")
end
function OnLoginFailed(error)
local pfTestOutput = gui.get_node("pfOutput")
local message = "Something went wrong with your first API call.\n"
local message = message .. "Here's some debug information:\n"
local message = message .. error.GenerateErrorReport()
gui.set_text(pfTestOutput, message)
end
在 Defold 编辑器中,右键单击 PfGettingStarted.gui ->通过以下方式打开 ->文本编辑器。 遗憾的是,这会在 Defold 中更改内部设置,因此:
再次打开它:右键单击 PfGettingStarted.gui ->通过以下方式打开 ->GUI 编辑器。 这会将默认设置重置回正常设置。
对 PfGettingStarted.gui 选择文本编辑选项卡。
按如下所示更新 PfGettingStarted.gui 的文本内容。
script: "/main/PfGettingStarted.gui_script"
fonts {
name: "system_font"
font: "/builtins/fonts/system_font.font"
}
background_color {
x: 0.0
y: 0.0
z: 0.0
w: 1.0
}
nodes {
position {
x: 100.0
y: 620.0
z: 0.0
w: 1.0
}
rotation {
x: 0.0
y: 0.0
z: 0.0
w: 1.0
}
scale {
x: 1.0
y: 1.0
z: 1.0
w: 1.0
}
size {
x: 1080.0
y: 520.0
z: 0.0
w: 1.0
}
color {
x: 1.0
y: 1.0
z: 1.0
w: 1.0
}
type: TYPE_TEXT
blend_mode: BLEND_MODE_ADD
text: "Logging in..."
font: "system_font"
id: "pfOutput"
xanchor: XANCHOR_LEFT
yanchor: YANCHOR_TOP
pivot: PIVOT_NW
outline {
x: 1.0
y: 1.0
z: 1.0
w: 1.0
}
shadow {
x: 1.0
y: 1.0
z: 1.0
w: 1.0
}
adjust_mode: ADJUST_MODE_FIT
line_break: false
layer: ""
inherit_alpha: true
clipping_mode: CLIPPING_MODE_NONE
clipping_visible: true
clipping_inverted: false
alpha: 1.0
outline_alpha: 1.0
shadow_alpha: 1.0
template_node_child: false
text_leading: 1.0
text_tracking: 0.0
size_mode: SIZE_MODE_AUTO
}
material: "/builtins/materials/gui.material"
adjust_reference: ADJUST_REFERENCE_PARENT
max_nodes: 512
完成并执行
首先,确保所有内容都已保存并选择另一个选项卡。然后寻找“ * ”标记 - 有时 Defold 不会刷新。
然后,构建游戏(Ctrl+b 或下拉菜单:项目 ->构建和发布)。 应在屏幕上看到以下文本:
“Congratulations, you made your first successful API call!”
有关所有可用客户端 API 调用的列表,请参阅我们的 PlayFab API 引用文档。
编码愉快!
解析此代码
PfGettingStarted.gui
- 我们有关
PfGettingStarted.gui
的说明只是为了方便,而不是必须如此。 此文件是一个 GUI 定义,它将一个文本框添加到屏幕,然后将它绑定到其他脚本:PfGettingStarted.gui_script
。 通常不会以文本形式编辑这些文件。 - 有关如何生成 Defold GUI 小组件的正确说明,请阅读此指南:
- Defold 中的 GUI 场景
- 我们有关
PfGettingStarted.gui_script
需要声明和设置。
-
PlayFabClientApi
允许进行客户端 API 调用 - 这是使用它的原因。 - IPlayFabHttps 和 PlayFabHttps_Defold:
- PlayFab Defold 插件基于 PlayFab LuaSdk 而构建。 Lua 语言没有正确的 HTTPS 模块。 使用 Lua 的每个游戏引擎都会实现自己的模块。 这两个变量告知 PlayFabSdk 如何访问 HTTPS。 在第一个场景中,只需在项目中执行此操作一次即可。 否则它只是必需样本
-
PlayFabClientApi.settings.titleId = "144"
- 使用 PlayFab 的每个项目都应在 PlayFab 网站(我们将它称为 Game Manager)中创建唯一的游戏。 在 Game Manager 中找到
titleId
,然后将144
替换为titleId
。
- 使用 PlayFab 的每个项目都应在 PlayFab 网站(我们将它称为 Game Manager)中创建唯一的游戏。 在 Game Manager 中找到
function init(self)
- Defold 函数 - 这会在 gui 初始化时进行调用。
local loginRequest = { TitleId = PlayFabClientApi.settings.titleId, CustomId = "GettingStartedGuide", CreateAccount = true }
- 大多数 PlayFab API 方法需要输入参数,而这些输入参数被打包到请求对象中
- 每个 API 方法都需要唯一请求对象,并且同时具有可选参数和强制参数
- 对于
LoginWithCustomIDRequest
,存在唯一标识玩家的CustomId
的强制参数,以及可利用此调用创建新帐户的CreateAccount
。
- 对于
- 对于登录,大多数开发者需要使用更合适的登录方法
- 有关所有登录方法的列表和输入参数,请参阅 PlayFab 登录文档。 常用选项为:
PlayFabClientApi.LoginWithCustomID(loginRequest, OnLoginSuccess, OnLoginFailed)
- 这会使用请求执行 API 调用,并为成功和失败条件提供回调函数。
function OnLoginSuccess(result)
- 许多 API 成功回调的结果对象将包含所请求的信息。
-
LoginResult
包含有关玩家的一些基本信息,但对于大多数用户而言,登录只是在调用其他 API 之前的必要步骤。
function OnLoginFailed(error)
API 调用可能由于多种原因而失败,应始终尝试处理失败。
为什么 API 调用失败(按可能性顺序)
未设置 PlayFabSettings.TitleId。 如果忘记将 titleId 设置为您的游戏,则不会进行任何操作。
请求参数。 如果未为特定 API 调用提供正确或必需的信息,则调用将失败。 有关详细信息,请参阅
error.errorMessage
、error.errorDetails
或error.GenerateErrorReport()
。设备连接问题。 手机不断失去/恢复连接,因此任何 API 调用在任何时候都可能随机失败,然后立即恢复运行。 进入隧道将完全断开连接。
PlayFab 服务器问题。 与所有软件一样,可能存在问题。 有关更新,请参阅我们的发行说明。
互联网并非 100% 可靠。 有时消息已受损或无法到达 PlayFab 服务器。
如果在调试问题时遇到困难,并且错误信息中的信息不充分,请访问我们的论坛
local pfTestOutput = gui.get_node("pfOutput")
- 这是另一个 Defold GUI 函数。 它提取在 PfGettingStarted.gui 文件中定义的
pfOutput
GUI 对象,并为它分配文本以显示给用户。
- 这是另一个 Defold GUI 函数。 它提取在 PfGettingStarted.gui 文件中定义的