UNET連線遊戲(九){美化遊戲選單與流程}

本篇使用的是5.3版後有UNET的UNITY
目標:重製連線UI
1.延續前篇(UNET連線遊戲(八){鬼抓人})
現在我們要用UNET重新實作連線介面
unet-hit-1312.首先拿原來布置好的場景複製一份(製成Prefab用來當背景),開新場景命名為StartScene後置入場景檔以及攝影機
unet-hit-1323.新建UI命名為Menu,為了方便排版在子階層先加入一個Panel再建立兩個按鈕跟一個輸入欄位
unet-hit-133並且命名如圖,一個用來開啟HOST,一個用來加入遊戲以及要加入的HOST端IP位置
4.在Panel加上Layout的Component,設定如圖讓按鈕寬400高100間距20,左上對齊,直式排列,完全置中,如此裡面的按鈕就會乖乖排列整齊
unet-hit-134
5.這場景依然需要一個NetworkManager,不過這次我們來客製化自己的功能,一樣用空物件命名並且加入一支新的程式NetworkUI.cs撰寫裡面的內容如下

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Networking;
public class NetworkUI : NetworkManager {
	public void StartupHost(){
		SetPort ();
		NetworkManager.singleton.StartHost ();
	}
	void SetPort(){
		NetworkManager.singleton.networkPort = 7777;
	}
	void SetIPAddress(){
		string IP = GameObject.Find ("InputIP").transform.FindChild ("Text").GetComponent<Text> ().text;
		NetworkManager.singleton.networkAddress = IP;
	}
	public void JoinGame(){
		SetPort ();
		SetIPAddress ();
		NetworkManager.singleton.StartClient ();
	}
}

由於自訂UI和要使用Network所以using他們但比較不同的是class這次繼承NetworkManager,並且建立新的HOST和JOIN方法,StartupHost()和JoinGame()宣告為public,稍後指定給UI按鈕用,設定port和ip位置的功能也加入其中,IP位置則是用輸入框的名子找到框內對應的文字來使用
6.然後依照之前的設定將繼承來的功能參數設定好
unet-hit-135唯一不同之處是offline和online場景分別加入這個選單場景和之前我們做的遊戲場景,前提是這兩個場景有在Bulid列表中才可以
unet-hit-136
7.接下來設定按鈕HOST和JOIN的ONCLICK
unet-hit-137unet-hit-138觸發我們剛剛寫的對應功能,如此這個場景就完成了
8.接下來一個小動作就是切換到我們的遊戲場景刪除原來的NetworkManager (就是官方的那隻,有醜醜陽春UI的版本),因為我們後來加上了offline和online場景所以這個NetworkManager會被帶過去
1481831913584
9.這樣就達到我們美化UI的目的了!!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *