今天发现写的NetworkLobbyManager的一个子类LobbyManager在从lobby场景转换到game场景时没有生成gamePlayerPrefab,即使面板的GamePlayerPrefab槽中已经放置了预制体。原因是覆写的
public override bool OnLobbyServerSceneLoadedForPlayer(GameObject lobbyPlayer, GameObject gamePlayer)
没有执行,(该函数是每当一个客户端从lobby场景转换到game场景时该函数在服务端调用)。
在网上找到了解决办法:http://forum.unity3d.com/threads/lobbyplayer-to-gameplayer-networklobbymanager.349614/
OnLobbyServerSceneLoadedForPlayer还有
OnLobbyServerCreateGamePlayer
没有执行的原因是因为lobby预制体上面的LobbyPlayer(继承
NetworkLobbyPlayer
)
在加载场景时就被销毁而导致这两个函数没有执行。
需为
LobbyPlayer加上:
void Awake() {
DontDestroyOnLoad(transform.gameObject);
}
DontDestroyOnLoad(transform.gameObject);
}