【Unity3D-Mirror多⼈坦克⼤战】基础配置、场景⽣成和房间
机制(⼀)
源代码:
⽬录
1.导⼊mirror资源并添加本游戏所需要的mirror脚本
将mirror的房间管理脚本和房间⾓⾊脚本“移植”到本项⽬的脚本⽂件夹下, ⽅便后续开发进⾏对mirror的脚本进⾏⼆次开发
2.添加⽹络组件
新建NetworkRoomManagerExt.cs,继承CustomNetworkRoomManager
using UnityEngine;
public class NetworkRoomManagerExt : CustomNetworkRoomManager
{
……
}
新建⼀个空对象,把它作为⽹络组件,加⼊传输层组件Telepathy、⽹络ID和⽹络管理脚本NetworkRoomManagerExt
3.新建canvas,完成界⾯
直接全屏覆盖就⾏
可以根据设备不同、分辨率不同,保持物体相同的尺⼨
4.Mirror利⽤Canvs实现NetworkManagerHUD的UI界⾯在canvs中创建脚本
在CanvasHUD中添加代码
using System;
using System.Collections;
using System.Collections.Generic;
using Mirror;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class CanvasHUD : MonoBehaviour
{
public Button buttonHost, buttonClinet;
public void Start()
{
}
public void ButtonHost()
{
NetworkManager.singleton.StartHost();
}
public void ButtonClinet()
{
NetworkManager.singleton.StartClient();
}
}
5.创建房间场景和游戏场景
当玩家开始游戏时,会先进⼊⼀个房间,默认是局域⽹,只有所有玩家都准备了,才能开始游戏,新建⼀个空场景,命名为RoomScene
建⽴⼀个空场景,命名GameScene
添加到Build中,注意顺序
6.房间机制开发
由于继承了Mirror的NetworkRoomManager,所以在CustomNetworkRoomManager中添加⼀个所有玩家都准备才能开始的功能,代码如下
using UnityEngine;
public class NetworkRoomManagerExt : CustomNetworkRoomManager
{
bool showStartButton;
unity3d入门public override void OnRoomServerPlayersReady()
{
// calling the base method calls ServerChangeScene as soon as all players are in Ready state.
#if UNITY_SERVER
base.OnRoomServerPlayersReady();
#else
showStartButton = true;
#endif
}
public override void OnGUI()
{
base.OnGUI();
if (allPlayersReady && showStartButton && GUI.Button(new Rect(150, 300, 120, 20), "START GAME"))        {
// set to false to hide it in the game scene
showStartButton = false;
ServerChangeScene(GameplayScene);
}
}
}
配置⽹络组件中的NetworkRoomManagerExt
其中房间中的对象RoomPlayer被封装成了预制体,设置如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。