网易首页 > 网易号 > 正文 申请入驻

《火拼24》系列教程一(上):配置项目环境并实现用户登录

0
分享至

在上一篇公众号文章《》中,我们为大家梳理了《火拼24》项目开发的全流程大纲,将项目从最初构思到最终产品上线的一系列步骤清晰呈现。

选择 24 点这个基础且经典的数学玩法,是因为我们的初衷是要向开发者展示,如何借助 Unity Online Services(UOS)的能力,将一个基础的单机游戏原型,打造成一个可以上线,并且适合长线运营的完整的联网游戏。玩法本身并不是我们想展示的重点,因为我们知道开发者最不缺的,就是超酷的创意!开发者可以使用 Unity 实现游戏创意的从 0 到 1,而 UOS 则能让您的游戏充满生命力,陪伴您的游戏从 1 走到一万、十万、百万。

而今天,我们将正式开启《火拼24》系列教程的第一节内容!

接下来,就让我们进入本节教程的重点:配置项目环境并集成 Passport Login 来实现用户登录。这一步,是开启整个项目之旅的关键钥匙。它不仅能让我们的应用拥有一个简洁美观的启动界面,还能搭建起用户与应用的桥梁,实现安全便捷的登录功能,为后续游戏的开发和运营奠定坚实的基础。

教程视频

项目工程获取与学习指引

1. 初始项目工程下载

  • 仓库地址:

https://cnb.cool/unity/uos/Rush24Tutorial/-/tree/lesson1-start

  • 分支名称:lesson1-start 分支

  • 分支说明:请先下载 lesson1-start分支的项目工程,该分支已完成单机闯关的基础功能,是本节学习的起点。

2.完整示例工程参考
  • 仓库地址:

https://cnb.cool/unity/uos/Rush24Tutorial/-/tree/lesson1-end

  • 分支名称:lesson1-end 分支

  • 分支说明:lesson1-end 分支包含本节所有功能的完整实现代码,建议在学习完成后参考或用于调试对照。

教程学习大纲

1. 下载项目工程,安装 UOS Launcher

2. 绑定 UOS App 并安装 Passport Login SDK

3. 使用 PassportUI 实现用户登录

教程操作步骤

1. 下载项目工程,安装 UOS Launcher

1.1 下载并打开项目工程

请先通过上面提供的 git 仓库链接,下载初始状态(lesson1-start 分支)的项目工程。

然后通过 Unity Hub,打开刚刚下载好的项目工程。在教程中,我们是使用Unity 2022.3.42 f1c1版本来打开项目工程的,该教程同样适用于团结引擎,请大家自行选择想要使用的版本来开始你的学习。

1.2 UOS Launcher 安装

在 Unity Editor 菜单栏中打开「Window -> Package Manager」,点击左上角的「+」,选择「Add package from git URL」;

然后输入UOS Launcher 的 git 地址,点击「Add」等待安装完成。

https://cnb.cool/unity/uos/UOSLauncher.git

请注意:该步骤要求当前环境已安装 git,如果还没安装过 git 的话,请先前往安装 git ,然后再通过 git 安装 UOS Launcher。

2. 绑定 UOS App 并安装 Passport Login SDK

2.1 UOS App 的信息绑定

温馨提示:大家可以参考之前的的公众号文章教程,来为你当前的项目绑定你创建好的 UOS App。

点击菜单栏「UOS -> Open Launcher」,就可以打开 UOS 的 App 信息配置窗口了。点击 Launcher 面板的「LinkApp」按钮,在弹出窗口中选择「By Unity project」,在「Select organization」这里选择一个自己的项目组织,然后在「Select project 」选项这里,我们选择「Create a new project 」,自行设置修改项目名字「Project name」。

教程中,我们就先选择绑定创建好的 Rush24 应用了。

2.2 开启 Passport 服务并安装 SDK

在 UOS Launcher 的下拉服务窗口列表中,找到「Passport Login」,点击「Enable」开启服务。

然后点击「Install SDK」,安装 Passport Login SDK。

2.3 导入 PassportUI 资源

在弹出的窗口中,点击「导入」按钮,来导入 PassportUI 资源。

3. 使用 PassportUI 实现用户登录

登录功能模块的 UI 界面和脚本,我们使用的是 UOS 的 Passport 服务为用户提供的示例模板,在之前点击导入「PassportUI」资源的时候已经导入过了,可以直接在项目中使用,也可以根据自己喜欢的 UI 风格,进行自定义调整界面

3.1 创建登录控制的脚本

在 Login 脚本文件夹下,创建一个新的脚本 LoginController.cs,来实现 Passport 用户登录的功能。

在场景中创建一个空对象,命名为 LoginController,然后将刚才创建的脚本 LoginController.cs 挂载在当前空对象上。

在初始闯关状态时,我们是默认就会加载游戏的数据。但是,在这里我们会修改为先使用 Passport 实现登录功能后,再加载游戏的数据。所以,先将场景中的 LoadGameData 对象设置为隐藏状态,后面代码中会根据需要再激活的。

打开 LoginController.cs 脚本,添加代码。在 Start 方法中添加判断的代码,如果用户没有为当前项目绑定 UOS App 的话,给一个错误提示信息:

using UnityEngine;
using Unity.UOS.Common;
using Logger = TwentyFour.Scripts.Utilities.Logger;

namespace  Unity.UOS.TwentyFour
{
    public class LoginController : MonoBehaviour
    {        
        // Start is called before the first frame update
        void Start()
        {
            if (string.IsNullOrEmpty(Settings.AppID))
            {
                Logger.LogError("Empty App Info! Please open the menu in editor: UOS -> Open Launcher, and enter UOS App info. For more tutorial, open the menu in editor: Tutorial -> Show Tutorial.");
            }
        }
    }
}

3.2 初始化 PassportUI

在调用 Passport SDK 进行 UI 初始化的方法 Init 时,需要先传入配置 _config 和回调函数 _callback。

_config 是 Passport Login SDK 进行初始化时的相关配置:来设置是否自动旋转屏幕方向、是否通过自行调用 Login 函数启动登录面板,以及设置 UI 风格主题是深色还是浅色等等。

_callback 是 Passport Login SDK 的回调函数:Passport 中已经封装注册好了,在用户拒绝协议、完成登录、完成所有流程、用户登出这几个状态下的回调事件。

可以在「Passport登录」的文档手册上直接复制示例代码:

https://uos.unity.cn/doc/passport/login#createScript

复制过来代码后,修改为如下:

  • 在 _config 中,会通过宏定义区分下,如果使用的是团结引擎或者 Unity 的话,在 WebGL 场景下分别为 UnityContainerId 赋值。主要作用是可以根据编译环境,自动切换 WebGL 场景下的容器 ID,方便代码在不同平台下的兼容和维护。

  • 在 _callback 中,如果用户拒绝了协议,就退出游戏。也是使用宏定义区分下,是否在 Unity 编辑器中时,退出游戏的代码的不同处理。


using System.Collections;
using System.Collections.Generic;
using Unity.Passport.Runtime.UI;
using Unity.UOS.Common;
using UnityEngine;
using Logger = TwentyFour.Scripts.Utilities.Logger;
namespace  Unity.UOS.TwentyFour
{
    public class LoginController : MonoBehaviour
    {       
        // sdk 配置(Config 是 SDK 初始化时的配置)
        private readonly PassportUIConfig _config = new()
        {
            AutoRotation = true, // 是否开启自动旋转,默认值为 false。
            InvokeLoginManually = false, // 是否通过自行调用 Login 函数启动登录面板,默认值为 false。
            Theme = PassportUITheme.Dark, // 风格主题配置。
#if TUANJIE_1_0_OR_NEWER
            UnityContainerId = "tuanjie-container" // WebGL 场景下 Tuanjie 实例容器 Id。
#else
            UnityContainerId = "unity-container" // WebGL 场景下 Unity 实例容器 Id。
#endif
        };

        // sdk 回调
        private void _callback(PassportEvent e)
        {
            // event: 不同情况下的回调事件,详情可以参考下面的回调类型。
            switch (e)
            {
                case PassportEvent.RejectedTos:
                    Debug.Log("用户拒绝了协议");
                    //Quit game if TOS rejected
#if UNITY_EDITOR
                    UnityEditor.EditorApplication.isPlaying = false;
#else
                    Application.Quit();
#endif
                    break;
                case PassportEvent.LoggedIn:
                    Debug.Log("完成登录");
                    break;
                case PassportEvent.Completed:
                    Debug.Log("完成所有流程");
                    break;
                case PassportEvent.LoggedOut:
                    Debug.Log("用户登出");
                    break;
            }
        }

        //......
    }
}

然后在 LoginController.cs 脚本中添加登录的代码

  • 定义变量 coverPageHintText,用于在登录过程中显示提示信息。

  • 启动协程 InitLogin,开始初始化登录过程。

  • 设置 coverPageHintText 的文本为“正在...感应身份...”,向用户显示登录中的状态。

  • 然后让协程暂停一帧,确保 UI 有时间更新显示后,调用 Login() 方法,正式开始登录流程。

  • 在 Login 方法中,会先初始化 Passport SDK,然后调用 PassportUI.Init 方法来异步初始化 Passport UI 组件。


using System.Collections;
using System.Collections.Generic;
using Unity.Passport.Runtime;
using Unity.Passport.Runtime.UI;
using Unity.UOS.Common;
using UnityEngine;
using UnityEngine.UI;
using Logger = TwentyFour.Scripts.Utilities.Logger;

namespace  Unity.UOS.TwentyFour
{
    public class LoginController : MonoBehaviour
    {
        public Text coverPageHintText;

        //......

        // Start is called before the first frame update
        void Start()
        {
            if (string.IsNullOrEmpty(Settings.AppID))
            {
                Logger.LogError("Empty App Info! Please open the menu in editor: UOS -> Open Launcher, and enter UOS App info. For more tutorial, open the menu in editor: Tutorial -> Show Tutorial.");
            }
            StartCoroutine(InitLogin());
        }

        IEnumerator InitLogin()
        {          
            coverPageHintText.text = "正在...感应身份...";
            yield return null;

            //Init Passport Login UI 
            Login();
        }

        private async void Login()
        {
            await PassportSDK.Initialize();
            await PassportUI.Init(_config, _callback);
        }
    }
}

回到场景中,为 Inspector 面板上的 coverPageHintText 变量赋值:

3.3 运行测试 PassportUI 登录的效果

此时运行游戏后,弹出的输入框中可以输入你的手机号:

输入收到的短信验证码:

然后会需要进行实名身份认证:

所以当用户短信验证和实名认证通过后,会自动进入 PassportEvent.Completed 状态。会在 Console 控制台看到输出的日志信息:“完成所有流程”。

点击 Passport Login 旁边的「Developer Portal」按钮,可以进入 UOS 网页端的 Passport 模块来查看信息。

在 Passport 的「用户管理」页面,可以看到已创建的用户。

3.4 激活加载关卡数据的游戏对象

用户登录后,我们加载游戏数据进入闯关环节。所以需要先激活场景中的加载关卡数据的游戏对象 LoadGameData。

  • 找到 LoginController.cs 脚本,定义加载数据的变量 loadGameData;

  • 添加 GotoLoadingPage 方法,来激活场景中的 LoadGameData 游戏对象;

  • 然后在 _callback 回调方法的 PassportEvent.Completed 状态下,调用方法 GotoLoadingPage。


namespace  Unity.UOS.TwentyFour
{
    public class LoginController : MonoBehaviour
    {
        public GameObject loadGameData;

        // sdk 回调
        private void _callback(PassportEvent e)
        {
            // event: 不同情况下的回调事件,详情可以参考下面的回调类型。
            switch (e)
            {
                //......
                case PassportEvent.Completed:
                    Debug.Log("完成所有流程");
                    GotoLoadingPage();
                    break;
            }
        }

        //......

        void GotoLoadingPage()
        {
            loadGameData.SetActive(true);
        }    
    }
}

在场景中,为 Inspector 面板上的 loadGameData 变量赋值:

此时也可以运行游戏进行测试下,看到登录成功后可以进行游戏闯关了。

3.5 修改 Passport 登录配置

「登录配置」模块,点击选中「模拟短信验证」,这样验证码直接输入111111」即可;取消选中「实名认证」,则暂时不再验证用户的身份信息。根据需要也可以自定义配置下用户协议

然后我们再次点击运行项目,是会看到在弹出的窗口中询问是否接受协议的。点击「接受以上协议」后,会直接进入游戏主页面进行闯关的。

3.6 实现登出 Passport 账户

但是如果我们修改了 Passport 的登录配置后,想要重新验证下效果的话,可以选择先登出账号,然后再重新登录。

登出按钮为:

找到 MainScene 场景中的 UI 对象 PlayerInfoPanel 下的按钮 Button_LogOut,可以看到它身上已经绑定好的事件:点击按钮时会激活 Popup_Logout 面板。

在 Login 文件夹下,创建实现账户登出的脚本 LogoutController.cs。

脚本 LogoutController.cs 中代码如下

PassportLogin SDK 是 UOS 提供的身份认证服务,用于管理用户登录状态(如设备登录、第三方账号关联等)。

  • 通过 PassportLoginSDK 集成的 Logout() 方法,主动终止当前用户的登录会话。这一步会清除本地存储的用户凭证(如Token)、重置身份状态,并通知 Passport 服务端用户已登出。


using UnityEngine;
using Unity.Passport.Runtime;
using TwentyFour.Scripts.Gameplay.HomePage;

namespace TwentyFour.Scripts.Features.Player
{
    public class LogoutController : MonoBehaviour
    {
        public void Logout()
        {
            PassportLoginSDK.Identity.Logout();
            GameRouter.LoadStartScene();
        }
    }
}

接着会调用 GameRouter.cs 脚本中的加载初始场景的方法 LoadStartScene:

public static class GameRouter
{
    public static void LoadStartScene()
    {
        SceneManager.LoadScene(StartScene);
    }
}

然后找到 Popup_Logout 面板下的确认退出的按钮子对象 Button_OK,将 LogoutController.cs 脚本挂载到它身上。

同时,为 Button_OK 按钮选择绑定 LogoutController.cs 脚本中的 Logout 方法。

修改为以上设置后,记得将 PlayerInfoPanel 和 Popup_Logout 面板都恢复为默认的隐藏状态。

然后我们再次点击运行项目,退出账号重新登录时,在输入手机号的验证码页面,大家就可以使用 111111 了,也不再需要进行实名认证了。

下节教程预告


教程主题——《火拼24》系列教程一(下):创建角色

《火拼24》下一篇教程:即将上线!会在现有功能的基础上,带大家完整实现「角色创建-服务端管理」流程,并添加了角色昵称的敏感词校验机制,帮你从源头规范游戏身份信息。

记得锁定更新,别错过每一步关键指南!

学习福利与兑换指南

我们为大家精心准备了一份学习福利哟——参与《火拼24》学习项目,在学习过程中所使用的云资源将全部免费!

那么,如何获取这份福利呢?以下是兑换流程:

  • 关注「UOS游戏云服务」公众号,然后在公众号内发送消息「24点教程」,你将会收到《火拼24》教程专属兑换码

  • 接下来,打开 UOS App 网页端,进入「设置」页面,在页面右上角找到并点击「兑换福利」按钮。

  • 在弹出的窗口中,输入你之前收到的《火拼24》教程专属兑换码,再点击「兑换福利」按钮就可以啦!

  • 兑换成功后,在「概览」页面,你就能看到《火拼24》学习项目的相关说明,请大家仔细阅读哦!

寄语

是时候开启你的开发实践之旅了!

立即下载 《火拼24》第一节教程的分支代码,跟随教程搭建 Launcher 的启动界面,集成 Passport Login 安全登录系统!从经典 24 点玩法到完整联网游戏,每一步实践都是成长的勋章。

立即行动,解锁游戏开发的第一块基石——让《火拼24》成为你技术进阶的实战平台,见证从功能模块到完整产品的系统性蜕变!

Unity Online Services (UOS) 是一个专为游戏开发者设计的一站式游戏云服务平台,提供覆盖游戏全生命周期的开发、运营和推广支持。

了解更多 UOS 相关信息:

官网:https://uos.unity.cn

技术交流 QQ 群:823878269

Unity 官方微信

第一时间了解Unity引擎动向,学习进阶开发技能

每一个“点赞”、“在看”,都是我们前进的动力

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
16岁冠军少年拍门庆功,被一刀捅死:母亲哭诉错不至死

16岁冠军少年拍门庆功,被一刀捅死:母亲哭诉错不至死

燕梳楼频道
2026-07-13 22:12:01
特朗普宣称将对霍尔木兹海峡货运收取20%费用;阿联酋:2艘油轮在霍尔木兹海峡遭伊朗2枚巡航导弹袭击

特朗普宣称将对霍尔木兹海峡货运收取20%费用;阿联酋:2艘油轮在霍尔木兹海峡遭伊朗2枚巡航导弹袭击

山西晚报
2026-07-14 09:42:01
停车5分钟收费4960元?女子愤怒报警,最后却傻眼了

停车5分钟收费4960元?女子愤怒报警,最后却傻眼了

灿烂夏天
2025-02-11 23:16:52
杜华首度携女儿上节目,住北京大别墅,58岁老公出镜头发花白却帅

杜华首度携女儿上节目,住北京大别墅,58岁老公出镜头发花白却帅

做一个合格的吃瓜群众
2026-07-14 10:00:22
菲防长扬言血战到底,新加坡媒体罕见站台中国:巴丹群岛属于中国

菲防长扬言血战到底,新加坡媒体罕见站台中国:巴丹群岛属于中国

生命中最美的邂逅
2026-07-14 09:01:00
西班牙一个皇马球员都不招,皇马球员创单届世界杯纪录

西班牙一个皇马球员都不招,皇马球员创单届世界杯纪录

体育世界
2026-07-12 23:08:06
百姓躺平摆烂,食税群体怎么办?

百姓躺平摆烂,食税群体怎么办?

律法刑道
2026-06-03 09:30:48
50岁被爆“离婚”的李小冉,早就为自己找好了后路,于和伟没说谎

50岁被爆“离婚”的李小冉,早就为自己找好了后路,于和伟没说谎

锅锅爱历史
2026-07-14 10:52:48
金价,又跌了!“三金”越来越便宜

金价,又跌了!“三金”越来越便宜

新浪财经
2026-07-13 16:57:06
邓文迪和李在镕同框:都是58岁,都离婚很多年,在一起有说有笑

邓文迪和李在镕同框:都是58岁,都离婚很多年,在一起有说有笑

毒舌小红帽
2026-07-13 20:22:25
C罗推迟婚礼!原计划夺冠后完婚,因葡萄牙止步世界杯而延期

C罗推迟婚礼!原计划夺冠后完婚,因葡萄牙止步世界杯而延期

星耀国际足坛
2026-07-13 23:59:14
研究发现:菊花茶可以在一天内溶解血栓、扩张血管,是真的吗?

研究发现:菊花茶可以在一天内溶解血栓、扩张血管,是真的吗?

芹姐说生活
2026-07-11 23:15:46
演都不演了!具俊晔争遗产不到24小时,更恶心的事曝光 大S后悔吗

演都不演了!具俊晔争遗产不到24小时,更恶心的事曝光 大S后悔吗

小嵩
2026-07-14 04:43:36
人设彻底崩塌!东契奇正在亲手毁掉湖人,独行侠其实早已看透真相

人设彻底崩塌!东契奇正在亲手毁掉湖人,独行侠其实早已看透真相

篮球小布丁
2026-07-13 02:35:06
林强涉案989亿被抓!生活奢华超过中东富豪,妻子、父母也有责任

林强涉案989亿被抓!生活奢华超过中东富豪,妻子、父母也有责任

细品名人
2025-12-31 07:34:46
“特朗普、内塔尼亚胡、英法德意四国领导人,被列入暗杀名单”

“特朗普、内塔尼亚胡、英法德意四国领导人,被列入暗杀名单”

新京报
2026-07-13 14:42:15
人老到不能自理时,最好用这4种方式解决,不拖累家人,不痛苦!

人老到不能自理时,最好用这4种方式解决,不拖累家人,不痛苦!

娱乐洞察点点
2026-07-12 06:38:07
仅播两集,央八《小芳》收视全国第一,看完后我想说:有剧王潜质

仅播两集,央八《小芳》收视全国第一,看完后我想说:有剧王潜质

白面书誏
2026-07-13 23:16:28
糖尿病绝对禁止吃的8种水果!医生:一口就可能让血糖飙升

糖尿病绝对禁止吃的8种水果!医生:一口就可能让血糖飙升

冷眼看世界728
2026-07-13 19:14:47
被制裁的荷兰大臣来华,不给中国光刻机,但打算继续卖落后的设备

被制裁的荷兰大臣来华,不给中国光刻机,但打算继续卖落后的设备

天气观察站
2026-07-13 15:03:55
2026-07-14 11:47:00
Unity incentive-icons
Unity
Unity中国官方帐户
2486文章数 6733关注度
往期回顾 全部

游戏要闻

《最终幻想》新作PS有光盘Xbox仅数字:NS2钥匙卡

头条要闻

疑上海55岁老师猥亵女孩仅被拘5天 猥亵行为持续3分钟

头条要闻

疑上海55岁老师猥亵女孩仅被拘5天 猥亵行为持续3分钟

体育要闻

33岁成为法国主力,他将在世界杯防守亚马尔

娱乐要闻

75岁施南生走完一生,撑起香港电影黄金时代

财经要闻

赛力斯的“代工厂”困境还能撑多久?

科技要闻

Meta投1.7万亿元建一个AI园区,配10座电厂

汽车要闻

小米澎程N90 Max工信部信息曝光 全尺寸旗舰 露营版首秀

态度原创

本地
艺术
健康
房产
数码

本地新闻

打的直达拉萨,一条视频拿下五十万奖金

艺术要闻

看不起“馆阁体”的人,看过此帖后安静了

这几类人离中风最近!有你吗?

房产要闻

三亚湾,最魔幻豪宅项目曝光!

数码要闻

红魔官方就游戏平板5 Pro缺货致歉:产能预计8月中下旬有所改善

无障碍浏览 进入关怀版