Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Spawns and manages instances of manager prefabs, ensuring they are not duplicated.
- /// </summary>
- public class ManagerSpawner : NetworkBehaviour
- {
- /// <summary>
- /// List of manager prefabs to be instantiated.
- /// </summary>
- [SerializeField]
- private List<GameObject> managerPrefabs;
- [SerializeField]
- private List<GameObject> networkBehaviorManagerPrefabs;
- public override void OnStartServer()
- {
- base.OnStartServer();
- if (IsServerInitialized)
- {
- LoadManagerPrefabs();
- SpawnNetworkBehaviors();
- }
- }
- public override void OnStartClient()
- {
- base.OnStartClient();
- if (IsClientInitialized)
- {
- LoadManagerPrefabs();
- SpawnNetworkBehaviors();
- }
- }
- private void LoadManagerPrefabs()
- {
- foreach (GameObject managerPrefab in managerPrefabs)
- {
- // Check if an instance of the manager prefab already exists
- if (GameObject.Find(managerPrefab.name + "(Clone)") != null)
- {
- continue;
- }
- GameObject managerInstance = Instantiate(managerPrefab);
- //InstanceFinder.NetworkManager.ServerManager.Spawn(managerInstance);
- MoveManagerToClientManagerScene(managerInstance);
- }
- }
- private void SpawnNetworkBehaviors()
- {
- foreach (GameObject managerPrefab in networkBehaviorManagerPrefabs)
- {
- // Check if an instance of the manager prefab already exists
- if (GameObject.Find(managerPrefab.name + "(Clone)") != null)
- {
- continue;
- }
- GameObject managerInstance = Instantiate(managerPrefab);
- InstanceFinder.ServerManager.Spawn(managerInstance);
- MoveManagerToClientManagerScene(managerInstance);
- }
- }
- private void MoveManagerToClientManagerScene(GameObject managerInstance)
- {
- // Move the manager instance to the ClientManager scene
- UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(managerInstance, UnityEngine.SceneManagement.SceneManager.GetSceneByName("ManagerScene"));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment