45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
|
using UnityEngine;
|
||
|
|
||
|
/// <summary>
|
||
|
/// This script should be placed on a GameObject in each scene to ensure settings are properly loaded and applied
|
||
|
/// </summary>
|
||
|
public class SceneSettingsInitializer : MonoBehaviour
|
||
|
{
|
||
|
[Header("Auto-create GameSettingsManager")]
|
||
|
[Tooltip("If true, will create a GameSettingsManager if one doesn't exist")]
|
||
|
public bool createManagerIfMissing = true;
|
||
|
|
||
|
[Header("Settings Manager Prefab")]
|
||
|
[Tooltip("Optional: Assign a GameSettingsManager prefab to instantiate")]
|
||
|
public GameObject settingsManagerPrefab;
|
||
|
|
||
|
void Start()
|
||
|
{
|
||
|
// Check if GameSettingsManager exists
|
||
|
if (GameSettingsManager.Instance == null && createManagerIfMissing)
|
||
|
{
|
||
|
GameObject settingsManagerGO;
|
||
|
|
||
|
if (settingsManagerPrefab != null)
|
||
|
{
|
||
|
// Use the assigned prefab
|
||
|
settingsManagerGO = Instantiate(settingsManagerPrefab);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
// Create a new GameObject with GameSettingsManager
|
||
|
settingsManagerGO = new GameObject("GameSettingsManager");
|
||
|
settingsManagerGO.AddComponent<GameSettingsManager>();
|
||
|
}
|
||
|
|
||
|
Debug.Log("GameSettingsManager created for scene: " + UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
|
||
|
}
|
||
|
else if (GameSettingsManager.Instance != null)
|
||
|
{
|
||
|
// If it exists, refresh the settings for this scene
|
||
|
GameSettingsManager.Instance.RefreshSettings();
|
||
|
Debug.Log("Settings refreshed for scene: " + UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
|
||
|
}
|
||
|
}
|
||
|
}
|