最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity實現(xiàn)注冊登錄模塊

 更新時間:2020年02月26日 07:47:52   作者:DwarfTitan  
這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)注冊登錄模塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

使用Zenject和UniRx的入門級技術(shù)實現(xiàn)了偽登錄注冊功能。

運行效果

登錄面板

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()
 {
 //用戶名輸入完成后光標(biāo)自動跳轉(zhuǎn)到密碼輸入框
 userName.OnEndEditAsObservable()
 .Subscribe((s =>
 password.Select()));
 //輸入完密碼后敲擊回車鍵或者點擊登錄按鈕 都觸發(fā)登錄事件
 var enterDownStream = password.OnEndEditAsObservable()
 .Select((s => "回車鍵觸發(fā)登錄"));
 var loginBtnStream = LoginBtn.OnClickAsObservable()
 .Select((unit => "通過點擊登錄按鈕觸發(fā)的登錄"));
 
 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()
 {
 //光標(biāo)跳轉(zhuǎn)
 userName.OnEndEditAsObservable()
 .Subscribe((s => password01.Select()));
 password01.OnEndEditAsObservable()
 .Subscribe((s => password02.Select()));
 
 var enterPress=password02.OnEndEditAsObservable()
 .Select((s => "回車鍵觸發(fā)注冊"));
 var btnClick = Regist.OnClickAsObservable()
 .Select((unit => "點擊注冊按鈕觸發(fā)注冊"));

 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>();
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#生成隨機(jī)數(shù)功能示例

    C#生成隨機(jī)數(shù)功能示例

    這篇文章主要介紹了C#生成隨機(jī)數(shù)功能,涉及C#數(shù)學(xué)運算與字符串操作相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • C#用戶控件之溫度計設(shè)計

    C#用戶控件之溫度計設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C#用戶控件之溫度計的設(shè)計方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C#實現(xiàn)格式化SQL語句的示例代碼

    C#實現(xiàn)格式化SQL語句的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C#如何實現(xiàn)格式化SQL語句的功能,文中的示例代碼簡潔易懂,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • C#創(chuàng)建、讀取和修改Excel的方法

    C#創(chuàng)建、讀取和修改Excel的方法

    這篇文章主要介紹了C#創(chuàng)建、讀取和修改Excel的方法,涉及C#使用Jet OLE DB操作Excel的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 淺談C#.NET、JavaScript和JSON

    淺談C#.NET、JavaScript和JSON

    本文介紹了C#.NET、JavaScript和JSON的相關(guān)知識,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • C#使用IronPython庫調(diào)用Python腳本

    C#使用IronPython庫調(diào)用Python腳本

    這篇文章介紹了C#使用IronPython庫調(diào)用Python腳本的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實現(xiàn)簡單的計算器功能

    C#實現(xiàn)簡單的計算器功能

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)簡單的計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 聚星C#數(shù)字信號處理工具包頻譜分析的用法

    聚星C#數(shù)字信號處理工具包頻譜分析的用法

    這篇文章主要介紹了聚星C#數(shù)字信號處理工具包頻譜分析的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C#中怎樣從指定字符串中查找并替換字符串?

    C#中怎樣從指定字符串中查找并替換字符串?

    本篇文章,小編為大家介紹一下,C#中怎樣從指定字符串中查找并替換字符串?有需要的朋友可以參考一下
    2013-04-04
  • C#實現(xiàn)語音播報功能

    C#實現(xiàn)語音播報功能

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)語音播報功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論

安龙县| 三亚市| 南充市| 芦山县| 平果县| 巴中市| 镇康县| 巴彦淖尔市| 铜梁县| 六安市| 德州市| 晴隆县| 渝北区| 溆浦县| 驻马店市| 疏勒县| 土默特左旗| 依安县| 新郑市| 资中县| 宿松县| 海安县| 鹿泉市| 石渠县| 南木林县| 佛冈县| 英德市| 方山县| 渭源县| 布尔津县| 仲巴县| 宁明县| 建昌县| 会理县| 绍兴市| 麟游县| 南岸区| 缙云县| 龙陵县| 汝南县| 吉隆县|