6-13 Switching Login Window And Signup Window
今天要接著製作登入頁面跟註冊頁面的跳轉,註冊頁面的製作方式與前幾章介紹得差不多,請大家舉一反三自己做看看吧。不會做的話請參考以下兩章:
6-11 Decorating Login User Interface
然後註冊畫面也差不多,按下去會回到登入畫面。註冊畫面請根據自己的需求做調整,因為我的遊戲範例只用到帳號跟密碼兩種資料,不需要再輸入姓名等其它個資。
接著在Login Window新增一個Script名為LoginWindow.cs。
同理在Signup Window也新增一個SignupWindow.cs。
接著來撰寫程式吧,由於我過去已經針對視窗類型寫了一個共用類別Panel.cs,所以就直接繼承Panel便能使用他的Hide與Show方法。如果不知道Panel.cs寫了哪些內容,可以先參考這篇文章:
5-14 Discard Item And Control Panel Display
https://3dactionrpg.blogspot.tw/2018/01/5-14-discard-item-and-control-panel.html
不過我還是提供本次會用到的完整原始碼:
LoginWindow.cs:
SignupWindow.cs:
Panel.cs:
撰寫好以後,請回到Login Window,將SignupWindow的物件放進框框中,並新增一個Canvas Group物件。
同理在Login Window的Button中,也選擇OnShowSignupButton事件。如此便完成兩個頁面切換的功能啦!
6-11 Decorating Login User Interface
6-12 Finishing Login User Interface
做完以後大致如下圖,登入畫面多了一顆按鈕,按下去後切換到註冊畫面。
然後註冊畫面也差不多,按下去會回到登入畫面。註冊畫面請根據自己的需求做調整,因為我的遊戲範例只用到帳號跟密碼兩種資料,不需要再輸入姓名等其它個資。
接著在Login Window新增一個Script名為LoginWindow.cs。
同理在Signup Window也新增一個SignupWindow.cs。
接著來撰寫程式吧,由於我過去已經針對視窗類型寫了一個共用類別Panel.cs,所以就直接繼承Panel便能使用他的Hide與Show方法。如果不知道Panel.cs寫了哪些內容,可以先參考這篇文章:
5-14 Discard Item And Control Panel Display
https://3dactionrpg.blogspot.tw/2018/01/5-14-discard-item-and-control-panel.html
不過我還是提供本次會用到的完整原始碼:
LoginWindow.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoginWindow : Panel {
[SerializeField] SignupWindow signupWindow;
public void OnLoginButton(){
}
public void OnShowSignupButton(){
this.Hide ();
signupWindow.Show ();
}
}
SignupWindow.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SignupWindow : Panel {
[SerializeField] LoginWindow loginWindow;
public void OnSignupButton(){
}
public void OnShowLoginButton(){
this.Hide ();
loginWindow.Show ();
}
}
Panel.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Panel : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler {
[SerializeField] float panelAlpha = 1;
[SerializeField] float smoothAlphaMultiplier = 4;
[SerializeField] KeyCode hotKey;
CanvasGroup canvasGroup;
void Start () {
canvasGroup = GetComponent ();
}
void Update () {
if (Input.GetKeyDown (hotKey)) {
DisplaySwitch ();
}
if (canvasGroup.alpha != panelAlpha) {
// 用Lerp函數控制Alpha的漸變
canvasGroup.alpha = Mathf.Lerp (canvasGroup.alpha, panelAlpha, Time.deltaTime * smoothAlphaMultiplier);
if (Mathf.Abs (canvasGroup.alpha - panelAlpha) < 0.01f) {
canvasGroup.alpha = panelAlpha;
}
}
}
public void Show(){
canvasGroup.blocksRaycasts = true;
panelAlpha = 1;
}
public void Hide(){
canvasGroup.blocksRaycasts = false;
panelAlpha = 0;
}
public void DisplaySwitch(){
if (panelAlpha == 1) {
Hide ();
} else {
Show ();
}
}
public void OnBeginDrag(PointerEventData eventData){
}
public void OnDrag(PointerEventData eventData){
// 將滑鼠座標轉換成Canvas上的座標
Vector2 position;
Canvas canvas = GetComponentInParent
撰寫好以後,請回到Login Window,將SignupWindow的物件放進框框中,並新增一個Canvas Group物件。
同樣,在SignupWindow中也這麼做。
接著在Signup Window的Button中,將Signup Window拉近On Click事件並選擇OnShowLoginButton,如下圖。
同理在Login Window的Button中,也選擇OnShowSignupButton事件。如此便完成兩個頁面切換的功能啦!








留言
張貼留言