【UNET自学日志】Part20 UI

时间:2022-12-01 03:53:31

说在前面,通过这部分我似乎看到了可以实现互联网的希望啦!

废话不多说,我们开始进入正题

首先在Menu场景下新建一些UI元素,两个button(ButtonStartHost和ButtonJoinGame),一个inputfield(InputFieldIPAddress),将InputFieldIPAddress下的子物体Text中的文本改为localhost;在Main场景下新建一个button(ButtonDisconnect)


新建脚本NetworkManager_Custom

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using UnityEngine.UI;

public class NetworkManager_Custom : NetworkManager {

//创建房间
public void StartupHost()
{
SetPort();
NetworkManager.singleton.StartHost();
}

//加入游戏
public void JoinGame()
{
SetIPAddress();
SetPort();
NetworkManager.singleton.StartClient();
}

//设置IP地址
void SetIPAddress()
{
string ipAddress = GameObject.Find("InputFieldIPAddress").transform.FindChild("Text").GetComponent<Text>().text;
NetworkManager.singleton.networkAddress = ipAddress;
}

//设置端口
void SetPort()
{
NetworkManager.singleton.networkPort = 7777;
}


void OnLevelWasLoaded(int level)
{
//如果当前场景是Menu,调用SetupMenuSceneButton函数
//如果当前场景是其他场景,调用SetupOtherSceneButton函数
if (level == 0)
{
SetupMenuSceneButton();
}
else
{
SetupOtherSceneButton();
}
}

//设置Menu场景下的button
void SetupMenuSceneButton()
{
GameObject.Find("ButtonStartHost").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("ButtonStartHost").GetComponent<Button>().onClick.AddListener(StartupHost);

GameObject.Find("ButtonJoinGame").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("ButtonJoinGame").GetComponent<Button>().onClick.AddListener(JoinGame);
}

//设置其他场景下的button
void SetupOtherSceneButton()
{
GameObject.Find("ButtonDisconnect").GetComponent<Button>().onClick.RemoveAllListeners();
GameObject.Find("ButtonDisconnect").GetComponent<Button>().onClick.AddListener(NetworkManager.singleton.StopHost);
}
}

将Menu场景中的NetworkManager中的NetworkManager和NetworkManagerHUD组件移除,将NetworkManager中的设置按照原样应用在NetworkManager_Custom中,接下来的Menu场景就如下图一样,点击StratHost按钮即可创建一个“房间”并开始游戏,点击JoinGame按钮即可加入“房间”开始游戏(若在输入框中输入其他的地址即可实现联网)


【UNET自学日志】Part20 UI

没有服务器的情况下,可以下载一个叫做hamachi的软件,生成一个可以远程连接的局域网(具体自行百度),copy其中的IP给好友就可以一起玩啦。

如此以来,实现互联网的功能就算实现了,如果要加入服务器的设置的话,看到这多多少少也会有一些想法了,过段时间看看博主能不能研究出些什么吧


UNET自学日志已经接近尾声啦!这在我想问一下各位观众老爷们,需不需要一个视频的教程(如果觉得自己英文水平不错的话可以看英文原版的视频,百度视频搜索UNET教程就有,此处应该感谢孙广东先生的视频搬运!)