这一期我们来实现UI的搭建以及服务器的创建。并详述一些注意事项。
首先是UI的搭建,我们用到了UGUIv3.6.8插件。下载地址https://pan.baidu.com/s/1ZEWnjdCebGiHLSUzy8YP_g。
导入完成后菜单栏会出现NGUI选项。
NGUI-Open-PrefabToolBar主要需要用到Simple Button和Simple InputField这两个组件。直接拖到场景中即可。其余UI同学们可以自由发挥。这里不再多费口舌。
接下来是Button事件的绑定。选中Button按钮,在Inspector面板下,找到UI Button,并在On Click下指定脚本与方法。注意,脚本里待绑定方法一定是public,不然找不到。
其次是Button绑定的方法。
Network.InitializeServer(在2018.3.2被弃用)
Obsolete public static NetworkConnectionError InitializeServer(int connections, int listenPort, bool useNat);
描述
connections是允许的入站连接或玩家的数量,listenPort是要监听的端口,useNat设置NAT穿透功能。如果你想要这个服务器能够接受连接使用NAT穿透,使用facilitator,设置这个为true。
public UIInput ipInput;//需要连接服务器的时候的ip,获取Input输入的值。
public int listenPort = 8899;//监听端口
public void OnButtonCreateServerClick()
{
Network.InitializeServer(2, listenPort, true);//创建服务器
}
public void OnButtonConnectServerClick()
{
Network.Connect(ipInput.value, listenPort);//连接服务器
}
然后就是逻辑判断,我们要等到客户端连接一同进入游戏。
public bool createSuccess=false;
public bool _isServer=true;
public GameObject uiRoot;
private void Update()
{
if(createSuccess&&_isServer)
{
uiRoot.SetActive(false);
createSuccess = false;
itemList.Clear();
sceneCount.text = "Scene " + _scene.ToString();
Scene.SetActive(true);
Invoke("LoadComplate", 2.0f);
Invoke("InitMap", 2.0f);
}
//if(UPlayerManager.Instance.vestigial<=0)
//{
// UPlayerManager.Instance.vestigial = 25;
// itemList.Clear();
// SceneManager.LoadScene(1);
// _scene++;
// sceneCount.text ="Scene "+ _scene.ToString();
//}
//IronHeart();
}
private void OnConnectedToServer()
{
_isServer = false;
uiRoot.SetActive(false);//客户端连接后隐藏NGUI的UIRoot
}
private void OnPlayerConnected(NetworkPlayer player)
{
createSuccess = true;
}
有人可能要问,为什么不用Network Manager HUD组件,其实也可以,但是需要重写OnConnectedToServer()和OnPlayerConnected()方法,不然达不到我们的目的,其次使用Network Manager HUD并不能有一个很好看的UI。(手动滑稽)
想更多的了解NetWork Manager可以去看这位大神的博客。https://blog.csdn.net/u010019717/article/details/46849341