入门指引
LEVEL INFINITE PASS 资源可以帮助业务屏蔽底层账号认证的实现细节,同时也包括繁琐的 UI 开发。业务可以使用 LEVEL INFINITE PASS 统一的登录能力快速并安全地上线。
根据本文中的步骤接入 LEVEL INFINITE PASS 后,游戏只需几行代码即可支持 LEVEL INFINITE PASS 和其他第三方身份供应商(本文中称为 "渠道")的身份验证功能。
前提条件
使用登录组件完成客户端登录流程
步骤1:导入 LI PASS 插件
- Unity
- Unreal Engine
- SDK 1.24 及 之后版本
- SDK 1.24 之前版本
Unity 2021.3.33f1 ~ Unity 2022
Unity 2018 ~ Unity 2022
目录 StreamingAssets/LevelInfinite
使用于 Player Network SDK V1.20.01 及以上版本,目录 StreamingAssets/INTLGameNative
使用于 Player Network SDK V1.20.00 及以下版本。
-
将
LevelInfinite
、Plugins
和StreamingAssets/LevelInfinite
文件夹复制到游戏项目的Assets
目录后,再使用 Unity 导入。文件夹 说明 LevelInfinite LI PASS 引擎层代码 Plugins LI PASS 平台层库文件 StreamingAssets/LevelInfinite LI PASS 业务逻辑资源,可热更
2. [可选] 从项目中移除程序集。
LI PASS 从 V1.08 版本开始支持程序集。如果项目不支持程序集,请执行以下步骤来移除:
- 删除以下程序集定义文件。
- 修改
luaSvr.cs
,将程序集名从LevelInfinite
换成Assembly-CSharp
。 - 联系 Player Network 助手获取不带程序集的
AssetBundle
包。
-
在 Unity 菜单栏,选择 INTLLua > All > Clear 删除
Assets/LevelInfinite/Runtime/INTLGameNative/Scripts/LuaObject
目录。
如果删除成功,则自动弹窗提示生成 Unity 的 Lua 接口。如未弹窗,在 Unity 菜单栏选择 INTL > INTLLua > All > Make 来手动触发弹窗。 -
在弹窗中,点击 Generate 生成 C# 导出到 Lua 的接口。
-
在
Assets/LevelInfinite/Runtime/INTLGameNative/Scripts/LuaObject
目录中查看接口导出文件是否成功生成。注意存在 Custom 和 Unity 文件夹代表接口文件生成成功。
- Custom 文件夹:自定义类接口导出到 Lua。
- Unity 文件夹:Unity 引擎类接口导出到 Lua。
6. [可选] 切换加载方式。
加载方式默认为 Editor 模式,用于在编辑器中正常跑通 LI PASS 流程。业务可选择在开发时,通过在菜单栏 LevelInfinite > AssetLoadMode 中选择对应的加载方式,将加载方式切换成 StreamingAssets 模式。
加载模式的选择不影响构建发布包的加载模式(默认 CDN)。
选项 | 说明 |
---|---|
Editor | 对应 INTL_DEBUG_LUA 宏,读取本地 Lua 文件 |
StreamingAssets | 对应 INTL_USE_LOCAL_ASSETS 宏,加载 StreamingAssets 中的 AssetBundle |
CDN | 对应 Player Network 控制台 AssetBundle ,如果控制台资源加载失败则加载 StreamingAssets 中的 AssetBundle |
7. [可选] 完成 Unity 主机游戏的项目配置。
-
安装并激活 Input System 包:
注意Input System 需要 Unity 2019.1 或更高版本与 .NET Framework 4 运行,不适用于运行 .NET Framework 3.5 的项目。
在 XSX 真机运行时需匹配 1.6.1 版本的 Input System,同时附带安装
com.unity.inputsystem.gxdk-1.0.1
的拓展包,如果遇到引入问题请联系 Player Network 助手。更多详情,请参见 Input System 安装指南.
-
从 Unity 的主菜单中,进入 Window > Package Manager 以打开 Unity Package Manager。
-
点击 Advanced,确认 Show Preview Packages 已启用。
-
从左侧的列表中,选择最新的 Input System 包后,点击 Install。
-
从 Unity 的主菜单中,进入 Edit > Project Settings后,点击 Player。
-
将 Active Input Handling 的值设置为
Input System Package (New)
。
-
-
添加宏定义:
-
从 Unity 的主菜单中,进入 Edit > Project Settings 后,点击 Player。
-
打开 Other Settings 面板,浏览至 Scripting Define Symbols。
-
将
INTL_CONSOLE_GAME_INPUT
添加到文本框中,使用分号分隔。 -
在
Assets/LevelInfinite
中打开程序集定义文件LevelInfinite.asmdef
,然后在 Assembly Definition References 中添加Unity.InputSystem
。
-
UE4.21 ~ UE4.27 & UE5 ~ UE5.4
-
将
LevelInfinite
文件夹拷贝至目标项目的Plugins
文件夹中。如果项目没有Plugins
文件夹,请创建一个。警告在 Cook 的时候如果报错
LongPackageNameToFilename failed to convert '/LevelInfinite'. Path does not map to any roots
,需要修改 Cook 的路径/LevelInfinite -> /LevelInfinite/
,一般常出现在低于 UE4.27 版本。注意在 LI PASS V1.16 之前的版本,LI PASS 插件必须要放到
Plugins/LevelInfinite
目录中。如果业务要自定义路径,要对应修改PLUGIN_LI_CONTENT_PATH
、LI_LUA_BASE_PATH
和FRAME_LUA_BASE_PATH
变量并重新编译。
在 LI PASS V1.16 或之后的版本,LI PASS 插件自动根据业务配置的自定义路径,动态加载资源文件。说明LevelInfiniteAssetVersion.lua
的文件拓展名为 LUA 而并非 LUAC,是因为里面包含了 LI PASS 的版本号,方便业务同学了解我们的 LI PASS 版本,便于定位问题。 -
打开游戏模块的构建文件,即
{项目名}.Build.cs
文件,并按照示例将LevelInfinite
插件添加为模块的私有依赖:public INTLSample(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay" });
// Add the following code
PrivateDependencyModuleNames.AddRange(new string[] {
"INTLCore",
"INTLFoundation",
"INTLConfig",
"LevelInfinite"
});
} -
将 LI PASS Lua 资源打进首包,在 Packaging/Additional Non-Asset 选项中添加:
../Plugins/LevelInfinite/Content
注意业务需要根据实际存放
LevelInfinite
文件夹的路径进行填写,例如实际存放路径是../Plugins/Template/LevelInfinite
,则在此需要添加的是../Plugins/Template/LevelInfinite/Content
。 -
将 LI PASS uasset 资源打进首包,在 Packaging/Additional Asset 选项中添加:
-
/LevelInfinite
-
步骤2:配置 LI PASS
业务可选择使用编辑器的可视化配置编辑工具来进行 LI PASS 的配置,或直接打开工程目录修改 INTLConfig.ini 文件。以下步骤将介绍如何使用编辑器轻松配置 LI PASS。
有关各配置项的详情,可在编辑器选中选项来自动展示选项的简述,或参见 LEVEL INFINITE PASS 配置 查看完整的配置项列表。
在编辑器运行时生效需要重启引擎,否则构建安装包时则自动生效。
- Unity
- Unreal Engine
-
通过编辑器工具栏 INTL > LI INIConfig Window 打开可视化配置编辑工具。
-
通过编辑器工具栏 LITools > Config Editor 打开可视化配置编辑工具。
-
将
ACCOUNT_SDK_KEY
和ACCOUNT_APP_ID
设置为 Player Network 控制台分配的值。注意在 LI PASS V1.16 之前的版本,将
ACCOUNT_URL
设置为https://test-pass.intlgame.com
来定义 LI PASS 测试环境。
在 LI PASS V1.16 或之后的版本,此配置项为选填。 -
为所需的平台配置指定的第三方登录渠道。
例如,ACCOUNT_THIRD_CHANNEL_ANDROID = Facebook,Google
。完整的配置列表,请参加 配置。
4. [可选] 在第三方渠道登录时获取玩家邮箱。
要在第三方渠道登录时获取玩家邮箱需先设置对应权限。
- 基于合规考虑,可针对特定来源对返回的
email
做 mask 处理,如有需求请联系 Player Network 助手打开。 - 可在后台流水日志中上报 hash 后的
base64(sha256(email))
,如有需求请联系 Player Network 助手打开。 - 可用于验证玩家信息或绑定列表是否包含
email
信息,如有需求请联系 Player Network 助手打开。 - 可用于 iOS Firebase 的 Private Set Membership(PSM)功能,详见 Firebase iOS 工程配置。
以下为支持返回玩家邮箱的第三方渠道:
Apple
Apple 获取玩家邮箱需要玩家授权,如果玩家拒绝授权将无法获取到玩家邮箱,详见 Login
接口传入 email
和 fullName
。
-
使用编辑工具,将
email
权限添加到 [Dynamic] 下的APPLE_LOGIN_PERMISSION
。 -
在 Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。
在 Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。
-
使用编辑工具,将
email
权限添加到 [Dynamic] 下的FACEBOOK_LOGIN_PERMISSION
。如果INTLConfig.ini
没有配置FACEBOOK_LOGIN_PERMISSION
,则会自动带上email
权限。 -
在 Meta for Developers 配置 email 权限。email 权限需要有 高级访问级别,才能让所有应用都能获取到玩家的 email。
-
在 Player Network 控制台开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。
-
在 Twitter Developer Platform 的 User authentication settings 下,勾选 Request email from users。
-
在 Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置