12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.SceneManagement;
- #if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
- using UnityEngine.InputSystem.UI;
- #endif
- namespace IngameDebugConsole
- {
- // Avoid multiple EventSystems in the scene by activating the embedded EventSystem only if one doesn't already exist in the scene
- [DefaultExecutionOrder( 1000 )]
- public class EventSystemHandler : MonoBehaviour
- {
- #pragma warning disable 0649
- [SerializeField]
- private GameObject embeddedEventSystem;
- #pragma warning restore 0649
- #if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
- private void Awake()
- {
- StandaloneInputModule legacyInputModule = embeddedEventSystem.GetComponent<StandaloneInputModule>();
- if( legacyInputModule )
- {
- DestroyImmediate( legacyInputModule );
- embeddedEventSystem.AddComponent<InputSystemUIInputModule>();
- }
- }
- #endif
- private void OnEnable()
- {
- SceneManager.sceneLoaded -= OnSceneLoaded;
- SceneManager.sceneLoaded += OnSceneLoaded;
- SceneManager.sceneUnloaded -= OnSceneUnloaded;
- SceneManager.sceneUnloaded += OnSceneUnloaded;
- ActivateEventSystemIfNeeded();
- }
- private void OnDisable()
- {
- SceneManager.sceneLoaded -= OnSceneLoaded;
- SceneManager.sceneUnloaded -= OnSceneUnloaded;
- DeactivateEventSystem();
- }
- private void OnSceneLoaded( Scene scene, LoadSceneMode mode )
- {
- DeactivateEventSystem();
- ActivateEventSystemIfNeeded();
- }
- private void OnSceneUnloaded( Scene current )
- {
- // Deactivate the embedded EventSystem before changing scenes because the new scene might have its own EventSystem
- DeactivateEventSystem();
- }
- private void ActivateEventSystemIfNeeded()
- {
- if( embeddedEventSystem && !EventSystem.current )
- embeddedEventSystem.SetActive( true );
- }
- private void DeactivateEventSystem()
- {
- if( embeddedEventSystem )
- embeddedEventSystem.SetActive( false );
- }
- }
- }
|