本篇使用的是5.3版後有UNET的UNITY
目標:重製連線UI
1.延續前篇(UNET連線遊戲(八){鬼抓人})
現在我們要用UNET重新實作連線介面
2.首先拿原來布置好的場景複製一份(製成Prefab用來當背景),開新場景命名為StartScene後置入場景檔以及攝影機
3.新建UI命名為Menu,為了方便排版在子階層先加入一個Panel再建立兩個按鈕跟一個輸入欄位
並且命名如圖,一個用來開啟HOST,一個用來加入遊戲以及要加入的HOST端IP位置
4.在Panel加上Layout的Component,設定如圖讓按鈕寬400高100間距20,左上對齊,直式排列,完全置中,如此裡面的按鈕就會乖乖排列整齊
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.然後依照之前的設定將繼承來的功能參數設定好
唯一不同之處是offline和online場景分別加入這個選單場景和之前我們做的遊戲場景,前提是這兩個場景有在Bulid列表中才可以
7.接下來設定按鈕HOST和JOIN的ONCLICK
觸發我們剛剛寫的對應功能,如此這個場景就完成了
8.接下來一個小動作就是切換到我們的遊戲場景刪除原來的NetworkManager (就是官方的那隻,有醜醜陽春UI的版本),因為我們後來加上了offline和online場景所以這個NetworkManager會被帶過去
9.這樣就達到我們美化UI的目的了!!