You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unity中实现关闭游戏后保持用户登录,无需重复输入用户名

Unity手机游戏实现持久化登录(记住用户名)方案

要实现关闭游戏后仍保持登录状态(仅需输入一次用户名,卸载前无需重复输入),核心是把用户名持久化存储在设备本地,且数据会在游戏卸载时自动清除。以下是几种实用的实现方式:

1. 最简单方案:用Unity自带的PlayerPrefs

PlayerPrefs是Unity内置的键值对存储工具,专门用来保存轻量级的游戏配置数据,在安卓、iOS上都会存在系统指定的持久化目录,完全符合需求。

存储用户名(用户输入完成后调用)

// 假设usernameInput是输入用户名的InputField组件
public void SaveUsername()
{
    string username = usernameInput.text;
    if (!string.IsNullOrEmpty(username))
    {
        PlayerPrefs.SetString("SavedUsername", username);
        PlayerPrefs.Save(); // 强制写入磁盘,避免意外崩溃丢失数据
        // 跳转到游戏主界面
    }
}

启动时读取并自动登录

在游戏启动的入口脚本(比如加载场景的Manager)的Start方法中检查:

void Start()
{
    if (PlayerPrefs.HasKey("SavedUsername"))
    {
        string savedUsername = PlayerPrefs.GetString("SavedUsername");
        // 直接进入游戏逻辑,比如加载主场景、初始化用户数据
        LoadMainGameScene();
    }
    else
    {
        // 显示用户名输入界面
        ShowUsernameInputUI();
    }
}

支持切换账号

如果需要让用户切换账号,添加一个“退出登录”按钮,点击后清除存储的用户名:

public void Logout()
{
    PlayerPrefs.DeleteKey("SavedUsername");
    // 回到用户名输入界面
    ShowUsernameInputUI();
}

2. 安全性优化:加密存储(可选)

PlayerPrefs默认是明文存储,若担心用户名被轻易读取,可以做简单加密处理,比如用XOR异或加密:

// 加密函数
private string EncryptString(string input)
{
    char[] chars = input.ToCharArray();
    // 自定义一个密钥(随便选个数字就行,自己记好)
    int key = 156;
    for (int i = 0; i < chars.Length; i++)
    {
        chars[i] = (char)(chars[i] ^ key);
    }
    return new string(chars);
}

// 存储时加密
public void SaveEncryptedUsername()
{
    string username = usernameInput.text;
    if (!string.IsNullOrEmpty(username))
    {
        string encryptedUsername = EncryptString(username);
        PlayerPrefs.SetString("EncryptedUsername", encryptedUsername);
        PlayerPrefs.Save();
    }
}

// 读取时解密
void Start()
{
    if (PlayerPrefs.HasKey("EncryptedUsername"))
    {
        string encrypted = PlayerPrefs.GetString("EncryptedUsername");
        string savedUsername = EncryptString(encrypted); // XOR加密解密是同一个函数
        LoadMainGameScene();
    }
    else
    {
        ShowUsernameInputUI();
    }
}

3. 自定义文件存储方案

如果不想用PlayerPrefs,也可以直接把用户名写入文件,存在Application.persistentDataPath目录下(这个目录是Unity官方推荐的持久化存储路径,卸载游戏会被删除):

存储用户名

using System.IO;

public void SaveUsernameToFile()
{
    string username = usernameInput.text;
    if (!string.IsNullOrEmpty(username))
    {
        string savePath = Path.Combine(Application.persistentDataPath, "user_login.txt");
        File.WriteAllText(savePath, username);
        LoadMainGameScene();
    }
}

启动时读取文件

void Start()
{
    string savePath = Path.Combine(Application.persistentDataPath, "user_login.txt");
    if (File.Exists(savePath))
    {
        string savedUsername = File.ReadAllText(savePath);
        if (!string.IsNullOrEmpty(savedUsername))
        {
            LoadMainGameScene();
            return;
        }
    }
    ShowUsernameInputUI();
}

切换账号时删除文件

public void Logout()
{
    string savePath = Path.Combine(Application.persistentDataPath, "user_login.txt");
    if (File.Exists(savePath))
    {
        File.Delete(savePath);
    }
    ShowUsernameInputUI();
}

内容的提问来源于stack exchange,提问作者danilovict2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:21:49