1
Fork 0
mirror of https://github.com/Steffo99/better-tee.git synced 2024-11-22 23:34:18 +00:00
better-tee/Assets/Packages/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs
2019-09-16 00:28:36 +02:00

46 lines
1.9 KiB
C#

using UnityEngine;
namespace Mirror.Examples.Additive
{
// This script is attached to a scene object called Zone that is on the Player layer and has:
// - Sphere Collider with isTrigger = true
// - Network Identity with Server Only checked
// These OnTrigger events only run on the server and will only send a message to the player
// that entered the Zone to load the subscene assigned to the subscene property.
public class ZoneHandler : NetworkBehaviour
{
[Scene]
[Tooltip("Assign the sub-scene to load for this zone")]
public string subScene;
[Server]
void OnTriggerEnter(Collider other)
{
Debug.LogFormat("Loading {0}", subScene);
// Get a reference to the SceneLoader component on the player prefab
SceneLoader sceneLoader = other.gameObject.GetComponent<SceneLoader>();
NetworkIdentity networkIdentity = other.gameObject.GetComponent<NetworkIdentity>();
// One or both of these might be null if you don't have Layers set up properly
if (sceneLoader != null && networkIdentity != null)
sceneLoader.TargetLoadUnloadScene(networkIdentity.connectionToClient, subScene, SceneLoader.LoadAction.Load);
}
[Server]
void OnTriggerExit(Collider other)
{
Debug.LogFormat("Unloading {0}", subScene);
// Get a reference to the SceneLoader component on the player prefab
SceneLoader sceneLoader = other.gameObject.GetComponent<SceneLoader>();
NetworkIdentity networkIdentity = other.gameObject.GetComponent<NetworkIdentity>();
// One or both of these might be null if you don't have Layers set up properly
if (sceneLoader != null && networkIdentity != null)
sceneLoader.TargetLoadUnloadScene(networkIdentity.connectionToClient, subScene, SceneLoader.LoadAction.Unload);
}
}
}