I have multiplayer networking code that works on host but not on client. On client FindObjectOfType fails to retrieve the BoardManager. However, it might be happening with the others as I encountered a similar error before. Can anyone explain why Unity can only retrieve an object once and how to get my code working?
//Function of GameManager
void Start() {
playerCount = 0;
net_manager = FindObjectOfType<NetworkManager>();
board_manager = FindObjectOfType<BoardManager>();
terrain_manager = FindObjectOfType<TerrainManager>();
selection_manager = FindObjectOfType<SelectionManager>();
unit_build_menu_manager = FindObjectOfType<UnitBuildMenuManager>();
terrain_info_panel_controller = FindObjectOfType<TerrainInfoPanelController>();
unit_info_panel_controller = FindObjectOfType<UnitInfoPanelController>();
terrain_manager.InitializeManagers(this, board_manager);
board_manager.InitializeManagers(this, terrain_manager);
selection_manager.InitializeManagers(terrain_manager, board_manager, terrain_info_panel_controller, unit_info_panel_controller);
unit_build_menu_manager.InitializeManagers(this, selection_manager, board_manager);
terrain_manager.FetchMapData();
max_players = terrain_manager.GetMaxPlayers();
playerList = new ArrayList();
currentTurn = 0;
}
//Function of BuildingController
public void InitiateManagers(GameManager game_manager, BoardManager board_manager)
{
this.game_manager = game_manager;
this.board_manager = board_manager;
Debug.Log(board_manager); //returns null
board_manager.RegisterBuilding(this.gameObject); //throws an exception
}