利用XML制作UGUI登陆界面

好久没有写博客了,最近比较忙。今天我们来分享一下制作账户登录界面的做法吧!由于比较喜欢UGUI,所以用UGUI系统来开发的,但是个人感觉UGUI和NGUI没有太多的区别!

先来几张图片看看效果图吧!

登陆主界面

随意输入一个用户名

正确的用户名

注册界面

开始注册

安全校验界面

保存的XML文档内容

好了,以上就是这个登陆界面的主要效果图啦!看了这么多的图片是不是心动了呢!自己也想开发出来吧!那下面就交给我们的程序员来解决吧!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.UI;
using System.Xml;
/// <summary>
/// xml制作登陆界面
/// </summary>
public class XMLEnter : MonoBehaviour
{
    #region 公共变量声明区
    /// <summary>
    /// 注册框
    /// </summary>
    public Image registerPass;

    /// <summary>
    /// 提示框
    /// </summary>
    public Image AlertPanel;

    /// <summary>
    /// 显示的文字
    /// </summary>
    public Text labelInfo;

    /// <summary>
    /// 提示框的文字
    /// </summary>
    public Text labelAlert;

    /// <summary>
    /// 注册的账户信息
    /// </summary>
    public InputField inputAccount;

    /// <summary>
    /// 注册账户的密码信息
    /// </summary>
    public InputField inputPassword;

    /// <summary>
    /// 注册账户的密码信息校验
    /// </summary>
    public InputField inputConfimPassword;

    /// <summary>
    /// 注册时的电话信息
    /// </summary>
    public InputField inputTelePhone;

    /// <summary>
    /// 注册时的QQ
    /// </summary>
    public InputField inputQQ;

    /// <summary>
    /// 登陆时的账户输入栏
    /// </summary>
    public InputField inputLoginAccountt;

    /// <summary>
    /// 登陆时的密码栏
    /// </summary>
    public InputField inputLoginPassword;
    #endregion

    #region 私有变量区

    /// <summary>
    /// 保存的xml文件路径
    /// </summary>
    private string xmlPath;
    #endregion

    #region Start初始化方法
    // Use this for initialization
    void Start()
    {

        xmlPath = Application.dataPath + "/user.xml";


        if (!File.Exists(xmlPath))
        {

            XmlDocument xmlDoc = new XmlDocument();//创建xml 对象
            XmlElement root = xmlDoc.CreateElement("Root");//创建根节点
            xmlDoc.AppendChild(root);//添加根节点

            XmlElement user = xmlDoc.CreateElement("User");//创建子节点
            //向子节点里面添加内容
            user.SetAttribute("user_name", "YLY");
            user.SetAttribute("user_pass", "1314520.yly");
            user.SetAttribute("user_tel", "1234567890");
            user.SetAttribute("user_qq", "123456789");
            root.AppendChild(user);//将设置的内容添加上去
            xmlDoc.Save(xmlPath);//保存xml文件

        }


    }

    #endregion

    #region 退出方法
    public void Quit()
    {
#if UNITY_EDITOR
        //在编译器模式下退出
        UnityEditor.EditorApplication.isPlaying = false;
#else
         Application.Quit();//发布之后退出的方法
#endif

    }

    #endregion

    #region 打开注册面板

    public void OpenRegisterPass()
    {
        registerPass.gameObject.SetActive(true);
    }

    #endregion

    #region 关闭注册面板

    public void CloseRegisterPass()
    {
        registerPass.gameObject.SetActive(false);
    }

    #endregion

    #region 打开提示框信息

    /// <summary>
    /// 打开提示框
    /// </summary>
    public void OpenAlertPanel(string str)
    {
        //需要打开提示框情况:
        //一:在登陆界面情况
        //1.未输入任何东西点击登陆界面
        //2.输入了但是密码不对
        //3.输入未完整的信息
        //4.提示登陆成功
        //二:在注册界面情况

        //1.信息没有填写完整
        //2.两次密码不一致
        //3.用户名重复
        //4.提示完成注册

        AlertPanel.gameObject.SetActive(true);
        labelInfo.text = str;
        labelAlert.text = str;
    }

    #endregion

    #region 关闭提示框信息

    /// <summary>
    /// 关闭提示框
    /// </summary>
    public void CloseAlertPanel()
    {
        AlertPanel.gameObject.SetActive(false);
    }

    #endregion

    #region 校验注册界面用户信息显示提示

    public void RegiterUser()
    {
        //两次密码不一致

        if (inputPassword.text != inputConfimPassword.text)
        {
            OpenAlertPanel("两次密码不一致");
            return;

        }

        //信息不完整
        if (inputAccount.text == "" || inputPassword.text == "" || inputConfimPassword.text == "" || inputTelePhone.text == "" || inputQQ.text == "")
        {
            OpenAlertPanel("信息不完整");
            return;

        }

        #region 用户名被使用过了

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlPath);
        XmlNodeList xmlList = xmlDoc.SelectSingleNode("Root").ChildNodes;//返回根节点下面的所以子节点

        foreach (XmlElement item in xmlList)
        {
            if (item.GetAttribute("user_name") == inputAccount.text)
            {
                OpenAlertPanel("用户名已经被占用!");
                return;
            }
        }

        #endregion

        #region 保存注册信息

        XmlNode root = xmlDoc.SelectSingleNode("Root");
        XmlElement user = xmlDoc.CreateElement("user");

        user.SetAttribute("user_name", inputAccount.text);
        user.SetAttribute("user_pass", inputPassword.text);
        user.SetAttribute("user_tel", inputTelePhone.text);
        user.SetAttribute("user_qq", inputQQ.text);
        root.AppendChild(user);
        xmlDoc.Save(xmlPath);

        OpenAlertPanel("恭喜,注册成功!");

        inputAccount.text = "";
        inputPassword.text = "";
        inputConfimPassword.text = "";
        inputTelePhone.text = "";
        inputQQ.text = "";

        CloseRegisterPass();//关闭注册面板

        #endregion


    }
    #endregion

    #region 登陆按钮监听的事件

    public void LoginGame()
    {
        if (inputLoginAccountt.text == "" || inputLoginPassword.text == "")
        {
            OpenAlertPanel("用户名或者密码不能为空");
            return;
        }

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlPath);
        XmlNodeList nodeList = xmlDoc.SelectSingleNode("Root").ChildNodes;

        bool isHasAccount = false;

        foreach (XmlElement item in nodeList)
        {
            if (item.GetAttribute("user_name") == inputLoginAccountt.text)
            {
                isHasAccount = true;
                var pass = item.GetAttribute("user_pass");

                if (inputLoginPassword.text == pass)
                {
                    OpenAlertPanel("登陆成功!");
                    Application.OpenURL("www.baidui.com");
                    return;
                }
                else
                {
                    OpenAlertPanel("登陆失败,密码错误");
                    return;
                }

            }

        }

        if (!isHasAccount)
        {
            OpenAlertPanel("用户名不存在");
        }
    }
    #endregion

}

终于写完了,代码还算吧比较清晰吧!不足的地方请多多指教哦!

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值