Blipples

ManagerSpawner_WIP

Jan 11th, 2025
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. /// <summary>
  2. /// Spawns and manages instances of manager prefabs, ensuring they are not duplicated.
  3. /// </summary>
  4. public class ManagerSpawner : NetworkBehaviour
  5. {
  6. /// <summary>
  7. /// List of manager prefabs to be instantiated.
  8. /// </summary>
  9. [SerializeField]
  10. private List<GameObject> managerPrefabs;
  11.  
  12. [SerializeField]
  13. private List<GameObject> networkBehaviorManagerPrefabs;
  14.  
  15. public override void OnStartServer()
  16. {
  17. base.OnStartServer();
  18.  
  19. if (IsServerInitialized)
  20. {
  21. LoadManagerPrefabs();
  22.  
  23. SpawnNetworkBehaviors();
  24. }
  25. }
  26.  
  27. public override void OnStartClient()
  28. {
  29. base.OnStartClient();
  30.  
  31. if (IsClientInitialized)
  32. {
  33. LoadManagerPrefabs();
  34.  
  35. SpawnNetworkBehaviors();
  36. }
  37. }
  38.  
  39. private void LoadManagerPrefabs()
  40. {
  41. foreach (GameObject managerPrefab in managerPrefabs)
  42. {
  43. // Check if an instance of the manager prefab already exists
  44. if (GameObject.Find(managerPrefab.name + "(Clone)") != null)
  45. {
  46. continue;
  47. }
  48.  
  49. GameObject managerInstance = Instantiate(managerPrefab);
  50. //InstanceFinder.NetworkManager.ServerManager.Spawn(managerInstance);
  51. MoveManagerToClientManagerScene(managerInstance);
  52. }
  53. }
  54.  
  55. private void SpawnNetworkBehaviors()
  56. {
  57. foreach (GameObject managerPrefab in networkBehaviorManagerPrefabs)
  58. {
  59. // Check if an instance of the manager prefab already exists
  60. if (GameObject.Find(managerPrefab.name + "(Clone)") != null)
  61. {
  62. continue;
  63. }
  64.  
  65. GameObject managerInstance = Instantiate(managerPrefab);
  66. InstanceFinder.ServerManager.Spawn(managerInstance);
  67. MoveManagerToClientManagerScene(managerInstance);
  68. }
  69. }
  70.  
  71. private void MoveManagerToClientManagerScene(GameObject managerInstance)
  72. {
  73. // Move the manager instance to the ClientManager scene
  74. UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(managerInstance, UnityEngine.SceneManagement.SceneManager.GetSceneByName("ManagerScene"));
  75. }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment