Unity实现注册登录模块

使用Zenject和UniRx的入门级技术实现了伪登录注册功能。

运行效果

登录面板

using System;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
using Zenject;

public class LoginPanel : MonoBehaviour
{
 public InputField userName;
 public InputField password;
 public Button LoginBtn;
 public Button RegistBtn;
 [Inject] private User _user;

 [Inject] private TipPanel _tipPanel;
 [Inject] private RegistPanel _registPanel;
 void Start()
 {
 //用户名输入完成后光标自动跳转到密码输入框
 userName.OnEndEditAsObservable()
 .Subscribe((s =>
 password.Select()));
 //输入完密码后敲击回车键或者点击登录按钮 都触发登录事件
 var enterDownStream = password.OnEndEditAsObservable()
 .Select((s => "回车键触发登录"));
 var loginBtnStream = LoginBtn.OnClickAsObservable()
 .Select((unit => "通过点击登录按钮触发的登录"));

 Observable.Merge(enterDownStream, loginBtnStream)
 .Subscribe((s =>
 {
 Debug.Log(s);
 if (LoginCheak(userName.text,password.text))
 {
  userName.text=String.Empty;
  password.text=String.Empty;
  _tipPanel.Show("登录成功");
 }
 else
 {
  userName.text=String.Empty;
  password.text=String.Empty;
  _tipPanel.Show("登录失败");
 }
 }));
 RegistBtn.OnClickAsObservable()
 .Subscribe((unit =>
 {
 this.gameObject.SetActive(false);
 _registPanel.gameObject.SetActive(true);
 }));
 }

 public bool LoginCheak(string username,string password)
 {
 bool isOK = false;
 if (_user._dictionary.ContainsKey(username))
 {
 if (_user._dictionary[username] == password)
 {
 isOK = true;
 }
 }
 return isOK;
 }

}

注册面板

using UniRx;
using UnityEngine;
using UnityEngine.UI;
using Zenject;

public class RegistPanel : MonoBehaviour
{
 [Inject] private TipPanel _tipPanel;
 [Inject] private LoginPanel _loginPanel;
 [Inject] private User _user;

 public InputField userName;
 public InputField password01;
 public InputField password02;
 public Button Regist;
 public Button mainMenu;
 void Start()
 {
 //光标跳转
 userName.OnEndEditAsObservable()
 .Subscribe((s => password01.Select()));
 password01.OnEndEditAsObservable()
 .Subscribe((s => password02.Select()));

 var enterPress=password02.OnEndEditAsObservable()
 .Select((s => "回车键触发注册"));
 var btnClick = Regist.OnClickAsObservable()
 .Select((unit => "点击注册按钮触发注册"));

 Observable.Merge(enterPress, btnClick)
 .Subscribe((s =>
  {
  Debug.Log(s);
  if ((userName.text != null) && (password01.text == password02.text))
  {
  if (_user._dictionary.ContainsKey(userName.text))
  {
  _tipPanel.Show("用户名已存在");
  }
  else
  {
  _user._dictionary.Add(userName.text,password01.text);
  _loginPanel.userName.text = userName.text;
  _loginPanel.password.text = password01.text;

  _tipPanel.Show("注册成功");
  }
  }
  else
  {
  _tipPanel.Show("注册失败");
  }
  }
 ));
 mainMenu.OnClickAsObservable()
 .Subscribe((unit =>
 {
 this.gameObject.SetActive(false);
 _loginPanel.gameObject.SetActive(true);
 }));
 }
}

提示面板

using UniRx;
using UnityEngine;
using UnityEngine.UI;

public class TipPanel : MonoBehaviour
{
 public Button CloseBtn;
 public Text InfoText;

 void Start()
 {
 CloseBtn.OnClickAsObservable()
 .Subscribe(Hide);
 }

 public void Show(string message)
 {
 InfoText.text = message;
 this.gameObject.SetActive(true);
 }

 private void Hide(Unit unit)
 {
 InfoText.text = string.Empty;
 this.gameObject.SetActive(false);
 }

}

Installer

using System.Collections.Generic;
using Zenject;

public class LoginInstaller : MonoInstaller
{
 public LoginPanel _loginPanel;
 public RegistPanel _registPanel;
 public TipPanel _tipPanel;
 public User _user=new User();

 public override void InstallBindings()
 {
 Container.Bind<LoginPanel>().FromInstance(_loginPanel).AsSingle();
 Container.Bind<RegistPanel>().FromInstance(_registPanel).AsSingle();
 Container.Bind<TipPanel>().FromInstance(_tipPanel).AsSingle();
 Container.Bind<User>().FromInstance(_user);
 }
}
public class User
{
 public Dictionary<string, string> _dictionary;
 public User()
 {
 _dictionary=new Dictionary<string, string>();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity登录注册时限制发送验证码次数功能的解决方法

    当我们需要在Unity客户端做一个限制功能,比如按钮 (最好是发送验证码按钮)要求每天只能点击三次,等到第二天又有三次机会,这个过程不涉及到服务端消息,只涉及到本地存储,以下是我的解决方案: 直接上代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UniRx; using System; using System.IO; us

  • Unity实现注册登录模块

    使用Zenject和UniRx的入门级技术实现了伪登录注册功能. 运行效果 登录面板 using System; using UniRx; using UnityEngine; using UnityEngine.UI; using Zenject; public class LoginPanel : MonoBehaviour { public InputField userName; public InputField password; public Button LoginBtn; pu

  • 基于localStorge开发登录模块的记住密码与自动登录实例

    关于这个模块功能模块的由来,这是鸟大大的处女秀,为什么这么说呢?一天在群里,一个哥们说有私活,开发一个****模块,我那天手痒痒就和他聊了两句,然后,就决定给她做这个模块了,和他谈了谈交付时间,他说最迟两天,然后谈了谈加个,最后达成,500¥!!!这个模块其实第一天晚上我就开发出来了,那时我给他微信说,功能模块开发ok了,要不要远程查看一下,没问题的话就交了,一会他回我,好了就发过来,然后微信就转过来500¥,当时很诧异,毕竟是处女秀,然后就把项目交给他了,并且是完美交付,在客户那里,也没有出现

  • vue2.0+koa2+mongodb实现注册登录

    前言 前段时间和公司一个由技术转产品的同事探讨他的职业道路,对我说了一句深以为然的话: "不要把自己禁锢在某一个领域,技术到产品的转变,首先就是思维上的转变.你一直做前端,数据的交互你只知道怎么进,却不知道里面是怎么出的,这就是局限性." 醍醐灌顶般,刚好学习vue的时候看到有个注册登录的项目,索性我也跟着动手做一个vue项目,引入koa和mongodb,实现客户端(client)提交-服务端(server)接收返回-入数据库全过程. 本项目基于vue-cli搭建,利用token方式进

  • express+vue+mongodb+session 实现注册登录功能

    主要实现如下功能: 1. 支持注册,登录功能,用户可以注册完成后,进行登录,登录完成后会进入到列表增删改查页面. 2. 支持session会话,也就是说设置了多长时间登录过期,如果用户没有登录,直接进查询列表页面,会重定向到登录页面去,如果用户登录了后,把浏览器关掉,直接输入列表查询页面,会直接进入列表页面的. 3. 列表数据加入了分页功能. 4. 对数据库中的请求加入了日志记录. 先看下效果: 1. 首先服务器重启后,在地址栏中输入 http://localhost:8081/ 后,会重定向到

  • 通用的Django注册功能模块实现方法

    注册功能实现 forms组件进行表单验证: 用户头像前端实时展示: ajax发送post请求: 应用forms组件实现用户输入信息的校验.首先在app目录下创建一个myform.py的文件. 如果你的项目至始至终只用到一个forms组件那么你可以直接建一个py文件书写即可. 但是如果你的项目需要使用多个forms组件,那么你可以创建一个myforms文件夹在文件夹内,根据forms组件功能的不同创建不同的py文件. regform.py loginform.py userform.py orde

  • Python实现注册登录功能

    用Python写个注册登录功能,供大家参考,具体内容如下 本文是用Python写一个注册登录功能,难度不大,很适合练手主要就是用列表和字典,以及逻辑判断用到的第3方库模块是time模块,以及re(正则表达式)模块这里使用time模块就是为了通过sleep方法,让程序运行有进程感,不是一下子蹦出所有信息使用re模块就是用于判断密码的复杂性,我们注册软件系统判断我们的密码是否足够复杂就是通过正则表达式去判断的 首先第1步就是导入这2个模块,即 import time import re 之后需要1个

  • java实现注册登录系统

    本文实例为大家分享了java实现注册登录系统的具体代码,供大家参考,具体内容如下 1.创建菜单,注册,登录,退出 2.注册模块: a) 通过键盘输入用户名,密码b) 保存用户名密码到user.txt文件(包含用户名和密码)c) 注册成功 3.登录模块 a) 通过键盘输入用户名和密码b) 判断(超过三次提示过多错误,需要休眠30秒)c) 登陆成功 import java.io.File; import java.io.FileInputStream; import java.io.FileOutp

  • 原生js验证简洁注册登录页面

    序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 1 sign_up.html 注册表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>sign-up</title> <link rel="stylesheet" href="css

  • iOS+PHP注册登录系统 iOS部分(下)

    接着上篇<iOS+PHP注册登录系统 PHP部分(上)>进行学习 3.iOS部分 上一次我们写完了数据库部分和PHP部分这次我们来完成iOS部分. 首先先在storyboard中一阵狂拖,弄成如下图. 可以先在text Field中输入用户名和密码 方便以后调试. 3.1登录部分代码 创建一个新的UIViewController 名为registViewController(用于注册用户,ViewController用于登录). 在ViewController.h中importregistVi

  • Codeigniter注册登录代码示例

    本示例Codeigniter注册登录代码源自一个codeigniter的项目,现分享下~ 由于使用了 Active Record 类,一般数据库操作只有两层,即是C和V controllers/login.php文件: 复制代码 代码如下: <?phpclass Login extends CI_Controller { private $pass = ''; public function __construct() {  parent::__construct ();  $this->lo

随机推荐