6.服务器面板
6.1 拼面板
拼接服务器面板,包括换服,进入游戏,返回按钮,服务器文本等。创建好显示隐藏动效。发布。
6.2 功能逻辑
创建服务器面板脚本,继承Window
public class ServerWindow : Window
{
}
服务器面板脚本添加动画方法
protected override void DoShowAnimation()
{
base.DoShowAnimation();
this.contentPane.GetTransition("show").Play();
}
protected override void DoHideAnimation()
{
this.contentPane.GetTransition("hide").Play(base.DoHideAnimation);
}
服务器面板脚本重写初始化方法。创建面板并得到。点击进入游戏按钮时保存登录数据,隐藏所有的面板,切场景。点击换区按钮的事件要有选服面板才能做。点击返回按钮,把自动登录改成否,显示登录面板,隐藏服务器面板
protected override void OnInit()
{
base.OnInit();
this.contentPane = UIManager.Instance.LoadComponent("Login", "ServerWindow");
this.contentPane.MakeFullScreen();
UI_ServerWindow panel = this.contentPane as UI_ServerWindow;
panel.m_btnBegin.onClick.Add(()=> {
LoginMgr.Instance.SaveLoginData();
UIManager.Instance.ClearWindow(true);
SceneManager.LoadScene("GameScene");
});
panel.m_btnChange.onClick.Add(()=> {
});
panel.m_btnClose.onClick.Add(() => {
LoginMgr.Instance.loginData.autoLogin = false;
UIManager.Instance.ShowWindow<LoginWindow>();
UIManager.Instance.HideWindow<ServerWindow>();
});
}
服务器面板脚本重新显示方法。得到当前服务器id,如果是0则显示无选择,是其他要等有了服务器数据表再处理。
protected override void OnShown()
{
base.OnShown();
int id = LoginMgr.Instance.loginData.frontServerID;
UI_ServerWindow panel = this.contentPane as UI_ServerWindow;
if (id == 0)
{
panel.m_txtName.text = "无选择";
}
else
{
//读取服务器数据表 进行名字的更新
}
}
在登录面板确定按钮点击事件时,添加点击登录假如选过服就打开服务器面板的具体逻辑
panel.m_btnSure.onClick.Add(() => {
if( panel.m_inputAN.text.Length <= 6 ||
panel.m_inputPW.text.Length <= 3)
{
UIManager.Instance.ShowWindow<TipWindow>().ChangeInfo("账号必须大于6位,密码必须大于3位");
return;
}
if( LoginMgr.Instance.CheckInfo(panel.m_inputAN.text, panel.m_inputPW.text) )
{
LoginMgr.Instance.loginData.userName = panel.m_inputAN.text;
LoginMgr.Instance.loginData.passWord = panel.m_inputPW.text;
LoginMgr.Instance.loginData.rememberPw = panel.m_cbPW.selected;
LoginMgr.Instance.loginData.autoLogin = panel.m_cbAuto.selected;
LoginMgr.Instance.SaveLoginData();
if( LoginMgr.Instance.loginData.frontServerID == 0 )
{
//打开选服面板
}
else
{
UIManager.Instance.ShowWindow<ServerWindow>();
}
UIManager.Instance.HideWindow<LoginWindow>();
}
else
{
UIManager.Instance.ShowWindow<TipWindow>().ChangeInfo("账号或密码错位");
}
});
6.3 代码
ServerWindow
using FairyGUI;
using Login;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ServerWindow : Window
{
protected override void OnInit()
{
base.OnInit();
this.contentPane = UIManager.Instance.LoadComponent("Login", "ServerWindow");
this.contentPane.MakeFullScreen();
UI_ServerWindow panel = this.contentPane as UI_ServerWindow;
//进入游戏按钮 点击做什么
panel.m_btnBegin.onClick.Add(()=> {
//保存登录数据
LoginMgr.Instance.SaveLoginData();
//隐藏所有的面板
UIManager.Instance.ClearWindow(true);
//切场景
SceneManager.LoadScene("GameScene");
});
//点击换区按钮 点击做什么
panel.m_btnChange.onClick.Add(()=> {
//有了服务器选择面板 才能做
});
//返回按钮 点击做什么
panel.m_btnClose.onClick.Add(() => {
//避免自动登录勾选时 返回了登录界面 又会回到服务器界面
//所以返回登录界面之前 我们把自动登录 改成false
LoginMgr.Instance.loginData.autoLogin = false;
//显示登录面板
UIManager.Instance.ShowWindow<LoginWindow>();
//隐藏自己
UIManager.Instance.HideWindow<ServerWindow>();
});
}
protected override void OnShown()
{
base.OnShown();
//处理 服务器当前名字内容
int id = LoginMgr.Instance.loginData.frontServerID;
UI_ServerWindow panel = this.contentPane as UI_ServerWindow;
if (id == 0)
{
panel.m_txtName.text = "无选择";
}
else
{
//读取服务器数据表 进行名字的更新
}
}
protected override void DoShowAnimation()
{
base.DoShowAnimation();
this.contentPane.GetTransition("show").Play();
}
protected override void DoHideAnimation()
{
this.contentPane.GetTransition("hide").Play(base.DoHideAnimation);
}
}
LoginWindow
using FairyGUI;
using Login;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoginWindow : Window
{
protected override void OnInit()
{
base.OnInit();
this.contentPane = UIManager.Instance.LoadComponent("Login", "LoginWindow");
this.contentPane.MakeFullScreen();
//得到组件拓展类对象
UI_LoginWindow panel = this.contentPane as UI_LoginWindow;
//确定按钮点击后 做什么
panel.m_btnSure.onClick.Add(() => {
//判断 输入内容的合法性
if( panel.m_inputAN.text.Length <= 6 ||
panel.m_inputPW.text.Length <= 3)
{
UIManager.Instance.ShowWindow<TipWindow>().ChangeInfo("账号必须大于6位,密码必须大于3位");
return;
}
//验证用户名和密码 是否输入正确
//之后完成了注册功能 再回过头来写
if( LoginMgr.Instance.CheckInfo(panel.m_inputAN.text, panel.m_inputPW.text) )
{
//登录成功
//记录登录相关数据
//记录账号和密码数据
LoginMgr.Instance.loginData.userName = panel.m_inputAN.text;
LoginMgr.Instance.loginData.passWord = panel.m_inputPW.text;
//记录两个复选按钮选中情况
LoginMgr.Instance.loginData.rememberPw = panel.m_cbPW.selected;
LoginMgr.Instance.loginData.autoLogin = panel.m_cbAuto.selected;
//保存到本地 下一次运行游戏时
LoginMgr.Instance.SaveLoginData();
//决定打开哪个面板
//第一次登录 需要打开 选服面板
if( LoginMgr.Instance.loginData.frontServerID == 0 )
{
//打开选服面板
}
else
{
//打开服务器面板
UIManager.Instance.ShowWindow<ServerWindow>();
}
//隐藏自己
UIManager.Instance.HideWindow<LoginWindow>();
}
else
{
//登录失败
UIManager.Instance.ShowWindow<TipWindow>().ChangeInfo("账号或密码错位");
}
});
//注册按钮点击后 做什么
panel.m_btnRe.onClick.Add(()=> {
//显示注册面板
UIManager.Instance.ShowWindow<RegisterWindow>();
//隐藏自己
UIManager.Instance.HideWindow<LoginWindow>();
});
//当记住密码状态改变时 做什么
panel.m_cbPW.onChanged.Add(()=> {
//记住密码取消勾选时 强行取消勾选自动登录
if (!panel.m_cbPW.selected)
panel.m_cbAuto.selected = false;
});
//当自动登录时 做什么
panel.m_cbAuto.onChanged.Add(() =>
{
//自动登录勾选上 强行勾选上 记住密码
if (panel.m_cbAuto.selected)
panel.m_cbPW.selected = true;
});
}
/// <summary>
/// 显示时会自动调用的方法
/// </summary>
protected override void OnShown()
{
base.OnShown();
//初始化面板基础内容
//得到登录相关数据
LoginData data = LoginMgr.Instance.loginData;
//得到组件拓展类对象
UI_LoginWindow panel = this.contentPane as UI_LoginWindow;
//两个复选按钮 是否选中
panel.m_cbPW.selected = data.rememberPw;
panel.m_cbAuto.selected = data.autoLogin;
//账号密码 显示的内容
panel.m_inputAN.text = data.userName;
panel.m_inputPW.text = data.passWord;
//如果需要自动登录
if(data.autoLogin)
{
//之后完成了注册功能 再回过头来写 自动登录
//验证用户名和密码 是否输入正确
//之后完成了注册功能 再回过头来写
if (LoginMgr.Instance.CheckInfo(panel.m_inputAN.text, panel.m_inputPW.text))
{
//决定打开哪个面板
//第一次登录 需要打开 选服面板
if (LoginMgr.Instance.loginData.frontServerID == 0)
{
//打开选服面板
}
else
{
//打开服务器面板
UIManager.Instance.ShowWindow<ServerWindow>();
}
//隐藏自己
UIManager.Instance.HideWindow<LoginWindow>();
}
else
{
//登录失败
UIManager.Instance.ShowWindow<TipWindow>().ChangeInfo("账号或密码错位");
}
}
}
/// <summary>
/// 提供给外部设置账号和密码输入框内容的方法
/// </summary>
/// <param name="userName"></param>
/// <param name="passWord"></param>
public void SetInfo(string userName, string passWord)
{
UI_LoginWindow panel = this.contentPane as UI_LoginWindow;
panel.m_inputAN.text = userName;
panel.m_inputPW.text = passWord;
}
protected override void DoShowAnimation()
{
base.DoShowAnimation();
this.contentPane.GetTransition("show").Play();
}
protected override void DoHideAnimation()
{
this.contentPane.GetTransition("hide").Play(base.DoHideAnimation);
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com