Skip to content

Iron-Mountain-Software/scene-management

Repository files navigation

Scene Management

Version: 1.5.0

Description:

A system for loading scenes, tracking scene dependencies, and storing scene metadata.

Use Cases:

  • Manage scene metadata, such as id, initial screen orientation, and initial Time.scale.
  • Load scenes with fade effects (fade old scene out, fade loading scene in, fade loading scene out, fade new scene in)
  • Build loading screens with progress bars and percentage counters.
  • Manage scene dependencies and automatically load them when they're needed.
  • Manage lists of scenes, and apply a list to the build settings.

Directions for Use:

SceneData Scriptable Object that stores metadata about a scene. Must be named exactly the same as the scene it represents. Create > Scriptable Objects > Scene Management > SceneData SceneDatabase Stores all SceneData instances, and is used to rapidly switch between scenes. Create > Scriptable Objects > Scene Management > Database SceneList A customizable list of SceneDatas. Create > Scriptable Objects > Scene Management > SceneList SceneManager (singleton) Attach to a GameObject. Use this singleton to load scenes.

Package Mirrors:

Key Scripts & Components:

  1. public class Database : ScriptableObject
    • Properties:
      • public List Scenes { get; }
      • public SceneData LoginScene { get; }
      • public SceneData FirstGameScene { get; }
    • Methods:
      • public SceneData GetSceneByName(String sceneName)
      • public SceneData GetSceneByID(String id)
      • public SceneData GetRandomScene()
      • public void SortList()
      • public void RebuildDictionary()
      • public override String ToString()
  2. public class LoadSceneAfterSeconds : SceneChanger
  3. public class SceneChanger : MonoBehaviour
    • Methods:
      • public void LoadScene(SceneData sceneData)
  4. public class SceneData : ScriptableObject
    • Properties:
      • public String ID { get; }
      • public String Path { get; }
      • public String Name { get; }
      • public String SceneName { get; }
      • public ScreenOrientation ScreenOrientation { get; }
      • public List DependencyLists { get; }
      • public List DependencyScenes { get; }
      • public List Dependencies { get; }
    • Methods:
      • public Boolean DependsOn(Scene scene)
      • public void Load(float delay)
      • public void Load()
      • public virtual void ActivateSettings()
      • public virtual void OnThisSceneLoaded()
      • public virtual void OnThisSceneUnloaded()
      • public virtual void Reset()
      • public virtual void OnValidate()
  5. public static class SceneDataManager
  6. public class SceneList : ScriptableObject
    • Properties:
      • public List Scenes { get; }
      • public List SceneNames { get; }
  7. public static class SceneListsManager
  8. public class SceneManager : MonoBehaviour
    • Properties:
      • public Database SceneDatabase { get; }
      • public float Progress { get; }
      • public float GameSceneFadeOutSeconds { get; }
      • public float LoadingSceneFadeInSeconds { get; }
      • public float LoadingSceneFadeOutSeconds { get; }
      • public float GameSceneFadeInSeconds { get; }
      • public State CurrentState { get; }
    • Methods:
      • public SceneData GetSceneByName(String sceneName)
      • public SceneData GetSceneByID(String id)
      • public SceneData GetRandomScene()
      • public void LoadLoginScene()
      • public void LoadSceneByName(String sceneName, float delay)
      • public void LoadSceneByID(String id, float delay)
      • public void LoadScene(SceneData scene, float delay)
      • public SceneData GetActiveSceneData()

Launch

  1. public interface ISceneLaunchPlugin
    • Actions:
      • public event Action OnStatusMessageChanged
    • Properties:
      • public Int32 Priority { get; }
      • public Boolean IsReady { get; }
      • public String StatusMessage { get; }
      • public SceneData SceneToLaunch { get; }
  2. public class RuntimePlatformSceneLaunchPlugin : MonoBehaviour
    • Actions:
      • public event Action OnStatusMessageChanged
    • Properties:
      • public Int32 Priority { get; }
      • public Boolean IsReady { get; }
      • public String StatusMessage { get; }
      • public SceneData SceneToLaunch { get; }
  3. public class SceneLaunchManager : SceneChanger
    • Actions:
      • public event Action OnCurrentPluginChanged
    • Properties:
      • public ISceneLaunchPlugin CurrentPlugin { get; }
      • public Boolean Launching { get; }
    • Methods:
      • public void Launch()
  4. public class SceneLaunchPlugin : MonoBehaviour
    • Actions:
      • public event Action OnStatusMessageChanged
    • Properties:
      • public Int32 Priority { get; }
      • public Boolean IsReady { get; }
      • public String StatusMessage { get; }
      • public SceneData SceneToLaunch { get; }

Launch. U I

  1. public class SceneLaunchManagerStatusText : MonoBehaviour

U I

  1. public class BasicSceneChangeButton : SceneChangeButton
    • Properties:
      • public SceneData SceneData { get; }
  2. public class CloseApplicationButton : MonoBehaviour
  3. public abstract class SceneChangeButton : SceneChanger
  4. public class SceneFadingAnimation : MonoBehaviour
  5. public class SceneLoadingProgressText : MonoBehaviour
  6. public class SceneLoadingScreen : MonoBehaviour

About

A framework for asynchronously loading and unloading scenes with dependencies.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages