Skip to content

Commit f898a2c

Browse files
committed
Made SceneLoaderWrapper into a MonoBehavior and increased the delay before fading out loading screen
1 parent 91d087d commit f898a2c

File tree

4 files changed

+29
-69
lines changed

4 files changed

+29
-69
lines changed

Assets/BossRoom/Prefabs/SceneLoader.prefab

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ GameObject:
1010
m_Component:
1111
- component: {fileID: 7533068275093218427}
1212
- component: {fileID: 2071498811241465156}
13-
- component: {fileID: 8734696198808489477}
1413
m_Layer: 0
1514
m_Name: SceneLoader
1615
m_TagString: Untagged
@@ -44,32 +43,5 @@ MonoBehaviour:
4443
m_Script: {fileID: 11500000, guid: d202c9ed4a2c4a6fa83f21f1c21394ea, type: 3}
4544
m_Name:
4645
m_EditorClassIdentifier:
47-
m_ScenesTriggeringLoadingScreen:
48-
- MainMenu
49-
- CharSelect
50-
- PostGame
51-
- BossRoom
52-
m_ScenesEndingLoadingScreen:
53-
- MainMenu
54-
- CharSelect
55-
- PostGame
56-
- DungeonEntrance
57-
- DungeonTransition
58-
- DungeonBossRoom
5946
m_ClientLoadingScreen: {fileID: 0}
60-
--- !u!114 &8734696198808489477
61-
MonoBehaviour:
62-
m_ObjectHideFlags: 0
63-
m_CorrespondingSourceObject: {fileID: 0}
64-
m_PrefabInstance: {fileID: 0}
65-
m_PrefabAsset: {fileID: 0}
66-
m_GameObject: {fileID: 5970766024194302363}
67-
m_Enabled: 1
68-
m_EditorHideFlags: 0
69-
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
70-
m_Name:
71-
m_EditorClassIdentifier:
72-
GlobalObjectIdHash: 951099334
73-
AlwaysReplicateAsRoot: 0
74-
DontDestroyWithOwner: 0
75-
AutoObjectParentSync: 1
47+
m_NetworkManager: {fileID: 0}

Assets/BossRoom/Scenes/Startup.unity

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:9a523d895c6dadd7608849b89e6c8f9c80c95acc0f7ec523b2cdf27879a85dfe
3-
size 42916
2+
oid sha256:df9c2b258e0ebbfd9252072a0b9b08a9d39558c94319d52d29035e282cda90ad
3+
size 42040

Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/ClientLoadingScreen.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class ClientLoadingScreen : MonoBehaviour
1616
CanvasGroup m_CanvasGroup;
1717

1818
[SerializeField]
19-
float m_DelayBeforeFadeOut = 0.5f;
19+
float m_DelayBeforeFadeOut = 1;
2020

2121
[SerializeField]
2222
float m_FadeOutDuration = 1;

Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs

Lines changed: 25 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace Unity.Multiplayer.Samples.Utilities
77
{
8-
public class SceneLoaderWrapper : NetworkBehaviour
8+
public class SceneLoaderWrapper : MonoBehaviour
99
{
1010
/// <summary>
1111
/// Manages a loading screen by wrapping around scene management APIs. It loads scene using the SceneManager,
@@ -16,6 +16,9 @@ public class SceneLoaderWrapper : NetworkBehaviour
1616
[SerializeField]
1717
ClientLoadingScreen m_ClientLoadingScreen;
1818

19+
[SerializeField]
20+
NetworkManager m_NetworkManager;
21+
1922
public static SceneLoaderWrapper Instance { get; private set; }
2023

2124
public void Awake()
@@ -36,14 +39,13 @@ void Start()
3639
SceneManager.sceneLoaded += OnSceneLoaded;
3740
}
3841

39-
public override void OnDestroy()
42+
public void OnDestroy()
4043
{
41-
if (NetworkManager != null && NetworkManager.SceneManager != null)
44+
if (m_NetworkManager != null && m_NetworkManager.SceneManager != null)
4245
{
43-
NetworkManager.SceneManager.OnSceneEvent -= OnSceneEvent;
46+
m_NetworkManager.SceneManager.OnSceneEvent -= OnSceneEvent;
4447
}
4548
SceneManager.sceneLoaded -= OnSceneLoaded;
46-
base.OnDestroy();
4749
}
4850

4951
/// <summary>
@@ -52,9 +54,9 @@ public override void OnDestroy()
5254
/// </summary>
5355
public void AddOnSceneEventCallback()
5456
{
55-
if (NetworkManager != null && NetworkManager.SceneManager != null && NetworkManager.NetworkConfig.EnableSceneManagement)
57+
if (m_NetworkManager != null && m_NetworkManager.SceneManager != null && m_NetworkManager.NetworkConfig.EnableSceneManagement)
5658
{
57-
NetworkManager.SceneManager.OnSceneEvent += OnSceneEvent;
59+
m_NetworkManager.SceneManager.OnSceneEvent += OnSceneEvent;
5860
}
5961
}
6062

@@ -67,12 +69,12 @@ public void AddOnSceneEventCallback()
6769
/// <param name="loadSceneMode">If LoadSceneMode.Single then all current Scenes will be unloaded before loading.</param>
6870
public void LoadScene(string sceneName, LoadSceneMode loadSceneMode = LoadSceneMode.Single)
6971
{
70-
if (NetworkManager != null && NetworkManager.IsListening && NetworkManager.NetworkConfig.EnableSceneManagement)
72+
if (m_NetworkManager != null && m_NetworkManager.IsListening && m_NetworkManager.NetworkConfig.EnableSceneManagement)
7173
{
72-
if (NetworkManager.IsServer)
74+
if (m_NetworkManager.IsServer)
7375
{
7476
// If is active server and NetworkManager uses scene management, load scene using NetworkManager's SceneManager
75-
NetworkManager.SceneManager.LoadScene(sceneName, loadSceneMode);
77+
m_NetworkManager.SceneManager.LoadScene(sceneName, loadSceneMode);
7678
}
7779
}
7880
else
@@ -88,20 +90,20 @@ public void LoadScene(string sceneName, LoadSceneMode loadSceneMode = LoadSceneM
8890

8991
void OnSceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
9092
{
91-
if (NetworkManager == null || !NetworkManager.IsListening || !NetworkManager.NetworkConfig.EnableSceneManagement)
93+
if (m_NetworkManager == null || !m_NetworkManager.IsListening || !m_NetworkManager.NetworkConfig.EnableSceneManagement)
9294
{
9395
m_ClientLoadingScreen.StopLoadingScreen();
9496
}
9597
}
9698

9799
void OnSceneEvent(SceneEvent sceneEvent)
98100
{
99-
switch (sceneEvent.SceneEventType)
101+
// Only executes on client
102+
if (m_NetworkManager.IsClient)
100103
{
101-
case SceneEventType.Load: // Server told client to load a scene
102-
// Only executes on client
103-
if (IsClient)
104-
{
104+
switch (sceneEvent.SceneEventType)
105+
{
106+
case SceneEventType.Load: // Server told client to load a scene
105107
// Only start a new loading screen if scene loaded in Single mode, else simply update
106108
if (sceneEvent.LoadSceneMode == LoadSceneMode.Single)
107109
{
@@ -111,30 +113,16 @@ void OnSceneEvent(SceneEvent sceneEvent)
111113
{
112114
m_ClientLoadingScreen.UpdateLoadingScreen(sceneEvent.SceneName, sceneEvent.AsyncOperation);
113115
}
114-
}
115-
break;
116-
case SceneEventType.LoadEventCompleted: // Server told client that all clients finished loading a scene
117-
// Only executes on client
118-
if (IsClient)
119-
{
116+
break;
117+
case SceneEventType.LoadEventCompleted: // Server told client that all clients finished loading a scene
120118
m_ClientLoadingScreen.StopLoadingScreen();
121-
}
122-
break;
123-
case SceneEventType.SynchronizeComplete: // Client told server that they finished synchronizing
124-
// Only executes on server
125-
if (IsServer)
126-
{
119+
break;
120+
case SceneEventType.SynchronizeComplete: // Client told server that they finished synchronizing
127121
// Send client RPC to make sure the client stops the loading screen after the server handles what it needs to after the client finished synchronizing
128-
StopLoadingScreenClientRpc(new ClientRpcParams {Send = new ClientRpcSendParams {TargetClientIds = new[] {sceneEvent.ClientId}}});
129-
}
130-
break;
122+
m_ClientLoadingScreen.StopLoadingScreen();
123+
break;
124+
}
131125
}
132126
}
133-
134-
[ClientRpc]
135-
void StopLoadingScreenClientRpc(ClientRpcParams clientRpcParams = default)
136-
{
137-
m_ClientLoadingScreen.StopLoadingScreen();
138-
}
139127
}
140128
}

0 commit comments

Comments
 (0)