Unity3d实战之Unity3d网络游戏实战篇(13):登录&注册面板
学习书籍《Unity3d网络游戏实战》 罗培羽著 机械工业出版社
本文是作者在学习过程中遇到的认为值得记录的点,因此引用的代码等资源基本出资罗培羽老师的书籍,如有侵权请联系,必删。
建立好网络模块后,我们可以开始对UI进行编程,实现可视化的登录注册面板。在第二节-代码资源分离的界面系统中,实现了Panel基类,之后的所有面板都会基于该基类并根据需求进行实现。本节给出登录、注册的实例。
1、登录面板
根据自己的喜好构建一个登录界面,这里给出一个测试样例:
注意,其中的Panel和Tips是Canvas下的空物体,用于对各种Panel进行分组,他们拥有的是Rect Transform组件而不是Transform组件。
LoginPanel本身是Panel类型,以Text为后缀的是Text类型,以Input为后缀的是IntputField类型,以Btn为后缀的是Button类型。记得将LoginPanel拖拽到Resources文件夹中,因为PanelMgr的OpenPanel方法将从Resources文件夹中寻到对应的Panel并实例化。
根据LoginPanel所示,我们在登录时需要输入用户名、密码、点击登录或者注册。这四个物体使我们所关注的。
创建C# Script,命名为LoginPanel,声明四个变量:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // don't forget it.
public class LoginPanel : PanelBase {
/*
* Add a logout listener.
*/
private InputField idInput; // InputField of user name
private InputField pwInput; // InputField of password
private Button loginBtn; // Button of login
private Button regBtn; // Button of register
}
然后,按照需求重载父类PanelBase的Init()方法和OnShowing()方法:
#region Operation-Cycle
public override void Init (params object[] args)
{
base.Init (args);
skinPath = "LoginPanel";
layer = PanelMgr.PanelLayer.Panel;
}
public override void OnShowing ()
{
base.OnShowing ();
Transform skinTrans = skin.transform;
idInput = skinTrans.Find ("idInput").GetComponent<InputField> ();
pwInput = skinTrans.Find ("pwInput").GetComponent<InputField> ();
loginBtn = skinTrans.Find ("loginBtn").GetComponent<Button> ();
regBtn = skinTrans.Find ("regBtn").GetComponent<Button> ();
loginBtn.onClick.AddListener (OnLoginButtonClick)