【Salvation】——登录注册存储数据&验证用户

【Salvation】——登录注册存储数据&验证用户

写在前面:登录注册功能是在纯Unity3D环境内实现的,用到UGUI绘制界面技术,数据库的部分是后面拓展加进来的,这里数据存储是指存在XML用户文件中。


注册用户名和密码

zc()

用户名和密码登录

denglu()

检测用户名是否存在

按钮选择进入和返回

open_bz()/close_bz()

 

一、登录窗口绘制

 

 

1、Create    UI    Panel 面板 (和窗口屏幕一样大)

      √   Canvas 设置

      Rander  Mode → Screen Space - Camera(模式)

      把主摄像机 变成它的渲染相机 → 拖拽Main Camera → Render Camera

      这里可以用  小手鼠标操作  拖拽面板  放大操作

2、√  Canvas   Scaler   屏幕模式

      Ui  Scale Mode → Scale with Screen Si

      设计(参考)分辨率:X:800  Y:600

      Screen Math Mode → Match Width Or Height 匹配高

3、Panel 改名称 → Panel_bg(背景)

      给一张图片:Source Image  …

      颜色透明度:Image(Script) color:… 4个数值 → 往大调

4、Panel_bg下增加一个 Panel块   Panel_k

      透明度:同样的改法  → SF Window 图片(边框)

      color:可以改变颜色,任意颜色

      Text:文本 → Font:自备(华文行楷)Bold → Rich Text(副文本)将√取消 → Best Fit(大小自适应)√勾选 → color 选择颜色

5、Button 按钮

      text:修改文本文字 xxxx

      Transition(过渡效果):Color Tint颜色过渡 

  • Normal Color 正常颜色(自选)
  • Hightlight Color 高亮颜色(自选)

      Sprit  Swap 过渡图片

6、InputField  输入框

     placeholder :占位符 有提示,可输入

     Text :文本控件 用来接收用户输入的信息用的

     Source Image:背景图片

     Color:颜色

     √ Input Field(Script)→ Interactable √ 允许交互,一定要勾上

7、Character Limit:……  最大输入字符限制(0为没有限制)

      Content Type:……  standard 标准输入模式     Password 星号密码输入模式

8、创建Script文件 - dl.C#文件 实现退出功能 

//退出函数
public void Quit () 
    {
        #if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
        #else
        Application.Quit();
        #endif
    }
  • 拖拽文件到Canvas上,关联dl
  • 关联Button_tc 选择Button_tc,点击底部加号 + 
  • [ none ]     物体选择   Canvas
  • No   Function → 选Quit 退出方法

 

二、注册窗口绘制

 

 

1、Canvas中创建UI → Image 调节图片大小 → 绘一张纯色的背景图片

     在图片下 创建子物体

2、继续写 dl.C# 功能代码

     √  显示Image_zc 打勾即显示(现在不显示,要去掉这个√),要用代码打勾√

public void open_zc(){
 ……
//(ture) 打勾  → 打开
//(false) 取消 → 关闭
}

     实现关联注册按钮   同样, Canvas → open_zc()

     注册窗口里“确认提交”和“取消提交”也要关联  Canvas → close_zc()

     dl → 关联物体 - Image_zc

   

三、通用信息框的制作和测试

   

 

1、通用信息框:提示信息,包括两个文本框和一个按钮

      dl → 关联物体 

  • Image_ty_xxk  →Button_ty_xxk
  • Text_info
  • Text_ts

2、关联事件 - Canvas → dl → ty_xxk_close() "确定”按钮  关闭信息框

 

四、创建XML用户文件

 

 

1、在dl代码中 引入命令控件

  • using System.IO;  
  • using System.Xml;

2、添加 void start() 函数 → 判断本地xml文件是否存在,存在不创建,不存在自动创建

  • 发布成Exe文件时,user.xml文件在同步生成的data文件夹中
  • 没发布时,user.xml文件在编辑器里,Assets目录下

3、记得修改默认帐号信息 → 用户名,密码

 

五、注册函数

 

 

1、添加其他的用户资料,写入本地xml文件中 → 写之前检测特定的空

  • 空着没写
  • 乱写(有不符合要求的)
  • 两个密码不一致

2、在dl文件中,写入注册函数 public void zc() → 关联“确认提交”Button_zc_ok,点击加号 + , Canvas → zc()

 

六、检查用户名是否被占用

 

      

1、先把密码的内容类型设置为:password 星号密码类型

2、打开用户文件,查找已有的子节点<Root> ,获取User信息,与用户在“注册”中填的信息,比较

  • 有,给出提示,直接返回
  • 没有,继续操作

 

七、完整的dl.C#代码

 

 

//dl.C#(登录注册功能)

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.IO;  
using System.Xml;  
public class dl1 : MonoBehaviour {
    public Image image_zc;
    public Image image_ty_xxk;
    public Text text_info;
    public Text text_ts;
    private string _xmlpath;
    public InputField InputField_name_zc;
    public InputField InputField_pass_zc;
    public InputField InputField_pass1_zc;
    public InputField InputField_tel_zc;
    public InputField InputField_qq_zc;
    public InputField InputField_name;
    public InputField InputField_pass;
    //创建xml文件
    void Start () {
        _xmlpath=Application.dataPath+"/user.xml";
        if (!File.Exists (_xmlpath)) {
            //新建xml实例   
            XmlDocument xmlDoc = new XmlDocument();
            //创建根节点,最上层节点   
            XmlElement root = xmlDoc.CreateElement("Root");
            xmlDoc.AppendChild(root);
            //创建用户子节点
            XmlElement user = xmlDoc.CreateElement("User"); 
            user.SetAttribute("user_name","Elena");
            user.SetAttribute("user_pass","I1314");
            root.AppendChild(user);
            xmlDoc.Save(_xmlpath);  
            Debug.Log("xml creat success!"); 
        }
    }
    //退出函数
    public void Quit () 
    {
        #if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
        #else
        Application.Quit();
        #endif
    }
    //打开注册窗口
    public void open_zc(){
        image_zc.gameObject.SetActive (true);
        
    }
    //关闭注册窗口
    public void close_zc(){
        image_zc.gameObject.SetActive (false);
        
    }
    //打开通用信息框窗口
    public void ty_xxk(string str){
        image_ty_xxk.gameObject.SetActive (true);
        text_info.text = str;
        text_ts.text = str;
    }
    //关闭通用信息框窗口
    public void ty_xxk_close(){
        image_ty_xxk.gameObject.SetActive (false);
        
    }
    //注册函数
    
    public void zc(){
        if (InputField_name_zc.text == "" || InputField_pass_zc.text == "" || InputField_pass1_zc.text == "" || InputField_tel_zc.text == "" || InputField_qq_zc.text == "") {
            ty_xxk("信息不完整!有空的项目!");    
            return;
        }
        if (InputField_pass1_zc.text != InputField_pass_zc.text) {
            ty_xxk("两次输入的密码不一致!!");    
            return;        
        }
        //判断用户帐号是否被占用!
        XmlDocument xmlDoc = new XmlDocument(); 
        xmlDoc.Load(_xmlpath);
        XmlNodeList nodeList = xmlDoc.SelectSingleNode("Root").ChildNodes;
        foreach (XmlElement xe in nodeList){
            if (xe.GetAttribute("user_name") == InputField_name_zc.text){  
                ty_xxk("该用户名已被占用!请更换用户名!");
                return;  
            } 
        }
        
        //取得根节点
        XmlNode root = xmlDoc.SelectSingleNode("Root");
        //创建User新节点
        XmlElement user = xmlDoc.CreateElement("User");
        //XmlElement user1 = xmlDoc.CreateElement("User_lov");
        //XmlText lov = xmlDoc.CreateTextNode ("158");
        //user1.AppendChild (lov);
        //设置属性
        user.SetAttribute("user_name",InputField_name_zc.text);
        user.SetAttribute("user_pass",InputField_pass_zc.text);
        //将新节点加入根节点
        root.AppendChild(user);
        //root.AppendChild(user1);
        //保存文件
        xmlDoc.Save(_xmlpath);  
        //打开通用信息窗口显示信息
        ty_xxk("恭喜!注册成功!");
        //请空已注册的信息
        InputField_name_zc.text="";
        InputField_pass_zc.text="";
    }
    //登录函数
    public void denglu(){
        if (InputField_pass.text == "" || InputField_name.text == "") {
            ty_xxk("用户名或密码不能为空!");
            return;
        }
        //判断用户名是否已注册
        XmlDocument xmlDoc = new XmlDocument(); 
        xmlDoc.Load(_xmlpath);
        XmlNodeList nodeList = xmlDoc.SelectSingleNode("Root").ChildNodes;
        foreach (XmlElement xe in nodeList){
            //判断用户名是否已注册
            if (xe.GetAttribute("user_name") == InputField_name.text){  
                var mima=xe.GetAttribute("user_pass");
                if(InputField_pass.text==mima){
                    ty_xxk("登录成功!");
                    Application.OpenURL ("http://www.cnblogs.com/ljq66/");
                    return;
                }else{
                    ty_xxk("登录失败!密码错误!");
                    return;
                }
            } 
        }
        //没有注册
        ty_xxk("此用户帐号还没有注册!请注册!");
    }    
}

 


注:转载请注明出处     

posted @ 2017-11-02 16:40 柳洁琼Elena 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值