云计算百科
云计算领域专业知识百科平台

Unity--记住密码

在游戏开发中如果涉及登录功能,我们经常会增加一个“记住密码”来方便用户进行登录
本篇博客中我们主要通过PlayerPrefs来进行实现记住密码功能
在这里插入图片描述

主要代码及实现逻辑

实现逻辑

在这里插入图片描述

【首次运行】
Start() → 读 KEY_REMEMBER → 不存在,得默认值 0
→ Toggle 不勾选,输入框留空

【用户登录】
输入账号密码 → 勾选"记住密码" → 点登录
→ 服务器返回 200 → 写入 (1, 用户名, Base64密码) → Save() 落盘

【下次打开游戏】
Start() → 读到 1 → Toggle 自动勾上
→ 读出用户名 + 密码 → Base64 解码 → 自动填进输入框
→ 用户直接点登录即可

【用户某次取消勾选并登录成功】
→ 写入 0,DeleteKey 删掉账号密码 → 下次启动不再回填

主要代码

声明常量

private const string KEY_REMEMBER = "Login_Remember"; // 开关:上次是否勾选了"记住密码"
private const string KEY_USERNAME = "Login_UserName"; // 数据:用户名
private const string KEY_PWD = "Login_Password"; // 数据:密码(Base64 后)

存储时机:当服务器返回200 即 用户密码正确时进行存储

if (data.code == 200) //用户密码正确
{
if (toggleRememberPwd.isOn) // 点击了记住密码
{
// 存储内容
PlayerPrefs.SetInt(KEY_REMEMBER, 1);
PlayerPrefs.SetString(KEY_USERNAME, inputUserName.text);
PlayerPrefs.SetString(KEY_PWD, Base64Encode(inputPassword.text));
}
else
{
// 没勾选记住密码需要把旧数据清掉
PlayerPrefs.SetInt(KEY_REMEMBER, 0);
PlayerPrefs.DeleteKey(KEY_USERNAME);
PlayerPrefs.DeleteKey(KEY_PWD);
}
PlayerPrefs.Save();
}

核心用法

存数据

PlayerPrefs.SetInt(“myInt”, 100); // 存int
PlayerPrefs.SetFloat(“myFloat”, 3.14f); // 存浮点数
PlayerPrefs.SetString(“myStr”, “hello”); // 存字符串
PlayerPrefs.Save(); // 保存

读数据(Get),第二个参数是默认值(键不存在时返回)

int i = PlayerPrefs.GetInt(“myInt”, 0);
float f = PlayerPrefs.GetFloat(“myFloat”, 1.0f);
string s = PlayerPrefs.GetString(“myStr”, “默认文字”);

删除

PlayerPrefs.DeleteKey(“keyName”); // 删除单个键
PlayerPrefs.DeleteAll(); // 删除全部PlayerPrefs数据,慎用!
PlayerPrefs.HasKey(“keyName”); // 判断某个键是否存在,返回bool
PlayerPrefs.Save(); // 强制写入磁盘

读取账号

void Start()
{
LoadRememberAccount();
}

void LoadRememberAccount()
{
//读取记住标记,默认0(未记住)
bool isRemember = PlayerPrefs.GetInt(KEY_REMEMBER, 0) == 1;
//把复选框状态同步到UI
toggleRememberPwd.isOn = isRemember;

if (isRemember)
{
//读取用户名
string name = PlayerPrefs.GetString(KEY_USERNAME, "");
//读取base64编码后的密码
string pwdBase64 = PlayerPrefs.GetString(KEY_PWD, "");
//解码还原原始密码
string pwd = Base64Decode(pwdBase64);
//回填到输入框
inputUserName.text = name;
inputPassword.text = pwd;
}
}

Base64 编解码工具函数

string Base64Encode(string plainText)
{
if (string.IsNullOrEmpty(plainText)) return "";
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(bytes);
}
string Base64Decode(string base64Text)
{
if (string.IsNullOrEmpty(base64Text)) return "";
byte[] bytes = System.Convert.FromBase64String(base64Text);
return System.Text.Encoding.UTF8.GetString(bytes);
}

Encode:原始明文密码 → UTF8 字节数组 → Base64 字符串存入本地
Decode:读取本地 Base64 字符串 → 还原字节数组 → 原始密码,填入密码输入框

本专栏记录Unity新手小白的学习成长之路,愿和大家一同钻研、共同进步。文章若有疏漏或错误,欢迎各位大佬在评论区指正,我会及时勘误优化。觉得内容对你有帮助,不妨点个关注,后续持续更新Unity实用干货!本文部分内容由 AI 辅助整理生成

赞(0)
未经允许不得转载:网硕互联帮助中心 » Unity--记住密码
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!