【Unitydemo制作】音游制作—面板的登录和注册

作者 : admin 本文共5406个字,预计阅读时间需要14分钟 发布时间: 2024-06-16 共1人阅读

【Unitydemo制作】音游制作—面板的登录和注册插图


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 专栏交流🧧
🟥✨Unity100个实战基础✨🟥🎁
🟦✨ Unity100个精华一记✨🟦🎁
🟩✨ Unity50个demo案例教程✨🟩🎁
🟨✨ Unity100个精华细节BUG✨🟨🎁

【Unitydemo制作】音游制作—面板的登录和注册插图(1)

【Unitydemo制作】音游制作—面板的登录和注册插图(2)


文章目录

    • 前言
      • 🎶 逻辑梳理
    • 🎶(==1==) 登录面板逻辑
    • 🎶(==2==) 注册面板逻辑
    • 🅰️

前言


🎶 逻辑梳理


  • 1.采用单例模式构造的UIManager脚本,对所有面板类Panel进行管理
    ①加载预制体。Canvas和所有面板都以预制体的方式进行异步加载
    ②构建层级。并构建显示层级(Bot,Mid,Top,System) ,方便面板之间的显隐
    ③提供面板显示、隐藏、移除和 自定义事件添加的方法
    【Unitydemo制作】音游制作—面板的登录和注册插图(3)

🎶(1 登录面板逻辑


【Unitydemo制作】音游制作—面板的登录和注册插图(4)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能: 开始面板
//___________创建者:
//_____________________________________
//-------------------------------------
public class LoginPanel : BasePanel 
{
private CanvasGroup PanelGroup;
//当前登录成功的玩家数据
private  PlayerData palyerData;
//控件
InputField InputAC, InputPW;
Toggle Toggle1   ,Toggle2;
string userName, password;
protected override void Awake()
{
base.Awake();
PanelGroup = GetComponent<CanvasGroup>();
if (!PanelGroup)
{
PanelGroup = gameObject.AddComponent<CanvasGroup>();
}
InputAC = GetControl<InputField>("InputAC");
InputPW = GetControl<InputField>("InputPW");
Toggle1 = GetControl<Toggle>("Toggle1");
Toggle2 = GetControl<Toggle>("Toggle2");
userName = InputAC.text;
password = InputPW.text;
}
private  void Start()
{     
AllEvent();
}
public override void ShowMe()
{
Fade(true , PanelGroup);
base.ShowMe();
//面板数据初始化
InputAC.text = LoginData.GetInstance().userName;     
Toggle1.isOn = LoginData.GetInstance().autoRP;
//如果记住密码就显示密码否则未空格,trycatch是防止空报错
try
{
InputPW.text = Toggle1.isOn ? LoginData.GetInstance().password  :"";
}
catch { }
Toggle2.isOn = LoginData.GetInstance().atoLoginl;
if (Toggle2.isOn) //如果勾选了自动登录
{
Debug.Log("逻辑待添加");
InputPW.text = LoginData.GetInstance().password;
}
}
/// 
/// 重写隐藏方法
/// 
public override void HideMe()
{
Fade(false, PanelGroup);//进行淡出的效果
base.HideMe();
}
/// 
/// 添加控件监听事件
/// 
private void AllEvent()
{
try
{
//登录按钮的事件监听
GetControl<Button>("ButtonS").onClick.AddListener(() =>
{
userName = GetControl<InputField>("InputAC").text;
password = GetControl<InputField>("InputPW").text;
//当点击登陆时
//1.如果账号密码为空
Debug.Log ("此时密码为"+ password);
if (userName == "" || password == "" || userName ==null || password== null )
{
UIContorl.GetInstance().ChangeTipPanel("账号或密码不能为空! 请重新输入"); //显示提示面板
}
//2.不为空验证
else
{
palyerData = DataContorl.GetInstance().ReadData(userName);           
//验证成功
if (DataContorl.GetInstance().Tip(userName, password))
{
DataContorl.GetInstance().foreverPalyerdata = palyerData; //将数据中正确的玩家信息导入数据类中的全局成员                                       
UIManager.GetInstance().RemovePanel("LoginPanel");//移除登录面板   
UIManager.GetInstance().RemovePanel("BKPanel");//移除背景面板   
UIManager.GetInstance().ShowPanel <SelectPanel>("SelectPanel"); //加载模式选择面板
//记录临时数据
LoginData.GetInstance().userName  = InputAC.text;
LoginData.GetInstance().password  = InputPW.text;
}
else 
{
UIContorl.GetInstance().ChangeTipPanel("账号或密码错误请重新输入");                            
}
//记录临时数据
LoginData.GetInstance().userName = userName;
LoginData.GetInstance().password = password;
}
});
//注册按钮的事件监听
GetControl<Button>("ButtonR").onClick.AddListener( ()=>
{
UIManager.GetInstance().ShowPanel<ReginstPanel>("ReginstPanel");//显示注册面板
UIManager.GetInstance().RemovePanel("LoginPanel");//隐藏登录面板
});
//记住密码监听
GetControl<Toggle>("Toggle1").onValueChanged.AddListener ((isOn)=> {
if (!isOn)
{
GetControl<Toggle>("Toggle2").isOn = false;
LoginData.GetInstance().atoLoginl = false;
}
//记录临时数据
LoginData.GetInstance().autoRP  = isOn;
});
//自动登录监听
GetControl<Toggle>("Toggle2").onValueChanged.AddListener((isOn) => {
if (isOn)
{
GetControl<Toggle>("Toggle1").isOn = true;
LoginData.GetInstance().autoRP = true;
}
//记录临时数据
LoginData.GetInstance().atoLoginl = isOn;
});
}
catch
{
Debug.Log("没有获取到");
}
}
}

🎶(2 注册面板逻辑


【Unitydemo制作】音游制作—面板的登录和注册插图(5)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能: 注册面板
//___________创建者:
//_____________________________________
//-------------------------------------
public class ReginstPanel : BasePanel
{
private CanvasGroup PanelGroup;
private InputField InputAC, InputPW;
protected override void Awake()
{
base.Awake();
PanelGroup = GetComponent<CanvasGroup>();
if (!PanelGroup)
{
PanelGroup = gameObject.AddComponent<CanvasGroup>();
}
InputAC = GetControl<InputField>("InputAC");
InputPW = GetControl<InputField>("InputPW");
}
private   void Start()
{
AllEvent();
}
public override void HideMe()
{
Fade(false, PanelGroup);
base.HideMe();
}
/// 
/// 添加控件监听事件
/// 
private void AllEvent()
{
//取消按钮监听
GetControl<Button>("ButtonS").onClick.AddListener(()=>
{
UIManager.GetInstance().RemovePanel("ReginstPanel"); //尽量用移除不要用隐藏因为隐藏不会删除字典中的面板
UIManager.GetInstance().ShowPanel<LoginPanel>("LoginPanel"); //显示登录面板
});
//确定按钮监听
GetControl<Button>("ButtonR").onClick.AddListener(() =>
{
string userName = InputAC.text;
string password = InputPW.text;
//如果存在相同账号名
if (DataContorl.GetInstance().TipSame (userName))
{
UIContorl.GetInstance().ChangeTipPanel("该账号已存在!请重新注册");
InputAC.text = "";
InputPW.text = "";
}
else
{
PlayerData playerData = new PlayerData();
playerData.userName = userName;
playerData.password = password;
DataContorl.GetInstance().SaveData(userName, playerData);//注册信息存盘
acountContorller.GetInstance().SaveData(JsonManager.Instance.LoadData<AcountData >("acountArrary"),userName); //一直存用户账号
UIManager.GetInstance().ShowPanel<LoginPanel>("LoginPanel");
UIContorl.GetInstance().ChangeTipPanel("注册成功请返回登录");
UIManager.GetInstance().RemovePanel("ReginstPanel");
}
Debug.Log(Application.persistentDataPath );
});
}
}

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


【Unitydemo制作】音游制作—面板的登录和注册插图(6)


本站无任何商业行为
个人在线分享 » 【Unitydemo制作】音游制作—面板的登录和注册
E-->