6.服务器面板

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

×

喜欢就点赞,疼爱就打赏