10秒后在Unity Multiplayer中生成玩家

时间:2018-10-11 13:54:10

标签: unity3d multiplayer

我正在使用Unity的内置多人游戏系统来创建多人游戏,并且我已经完成了整个游戏工作。

目前,在我的多人游戏中,我的两个玩家都是在游戏开始时生成的,但是我想在等待10秒后生成它们。

因为我想在游戏中提供这种功能,所以我想给玩家一些时间。

enter image description here

基于这个原因,我在多件事上进行了谷歌搜索,并找到了以下链接: Custom Player Spawning

这样,我可以更新播放器,然后通过网络连接进行连接,仍然存在两个问题:

  • 由于回调自动被调用-OnServerAddPlayer,没有办法等待10秒钟。
  • 在NetworkManager的子类中没有自动调用OnServerAddPlayer方法

我需要做什么? 这是我的NetworkManager代码:

public class DodgelsNetworkManager : NetworkManager
{

 public override void OnClientConnect (NetworkConnection connection)
 {
     base.OnClientConnect (connection);

     GameHUDController.Instance.UpdateDebugMesssage ("\nOnClientConnect");

     Camera.main.SendMessage (GameConstants.ACTIVATE_NETWORK_WAITING_PANEL, true, SendMessageOptions.DontRequireReceiver);
     LayerScroller.stopScrolling = true;

     // client joined the host
     if (connection.connectionId > 0) {

         StartCoroutine (AfterDelayHideWaitingDialog ()); 
     }
 }

 IEnumerator AfterDelayHideWaitingDialog ()
 {
     GameObject networkPlayerObj = null;
     while (networkPlayerObj == null) {
         yield return new WaitForSeconds (0.1f);
         networkPlayerObj = GameObject.FindGameObjectWithTag (GameConstants.TAG_HUMAN_PLAYER);
     }

     networkPlayerObj.GetComponent<NetworkPlayerController> ().HidePlayerWaitingDialog ();
 }

 public override void OnServerAddPlayer (NetworkConnection conn, short playerControllerId)
 {
     Debug.Log ("-------------OnServerAddPlayer");
     GameObject player = Instantiate (playerPrefab, startPositions [conn.connectionId].position, Quaternion.identity);
     NetworkServer.AddPlayerForConnection (conn, player, playerControllerId);
 }

}

分享您对此的建议。

1 个答案:

答案 0 :(得分:1)

您调用另一个子例程,该例程等待10秒钟,然后在OnServerAddPlayer中实例化播放器。

 if (manager.IsClientConnected() && !ClientScene.ready)
 {
     ClientScene.Ready(manager.client.connection);
     ClientScene.AddPlayer(0);
 }