我正在使用Unity的内置多人游戏系统来创建多人游戏,并且我已经完成了整个游戏工作。
目前,在我的多人游戏中,我的两个玩家都是在游戏开始时生成的,但是我想在等待10秒后生成它们。
因为我想在游戏中提供这种功能,所以我想给玩家一些时间。
基于这个原因,我在多件事上进行了谷歌搜索,并找到了以下链接: Custom Player Spawning
这样,我可以更新播放器,然后通过网络连接进行连接,仍然存在两个问题:
我需要做什么? 这是我的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);
}
}
分享您对此的建议。
答案 0 :(得分:1)
您调用另一个子例程,该例程等待10秒钟,然后在OnServerAddPlayer中实例化播放器。
if (manager.IsClientConnected() && !ClientScene.ready)
{
ClientScene.Ready(manager.client.connection);
ClientScene.AddPlayer(0);
}