InputModeSwitching in InputManager and no more player input during UI pop ups
This commit is contained in:
@@ -438175,6 +438175,50 @@ Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 5145306031820616614, guid: fbbe1f4baf226904b96f839fe0c00181, type: 3}
|
||||
m_PrefabInstance: {fileID: 1352048898}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &1360662869
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1360662870}
|
||||
- component: {fileID: 1360662871}
|
||||
m_Layer: 0
|
||||
m_Name: TestObject
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1360662870
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1360662869}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0.45709, y: -0.24522, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1360662871
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1360662869}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d086a8fb5e4cfc047a52b859f91fb867, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1001 &1363194738
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -445420,3 +445464,4 @@ SceneRoots:
|
||||
- {fileID: 122256018}
|
||||
- {fileID: 1101333109}
|
||||
- {fileID: 4912039252317080710}
|
||||
- {fileID: 1360662870}
|
||||
|
||||
@@ -1,12 +1,27 @@
|
||||
using UnityEngine;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
/// <summary>
|
||||
/// Handles input events and dispatches them to the appropriate ITouchInputConsumer.
|
||||
/// Supports tap and hold/drag logic, with interactable delegation and debug logging.
|
||||
/// </summary>
|
||||
public class InputManager : MonoBehaviour
|
||||
namespace Input
|
||||
{
|
||||
public enum InputMode
|
||||
{
|
||||
Game,
|
||||
UI,
|
||||
GameAndUI,
|
||||
InputDisabled
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles input events and dispatches them to the appropriate ITouchInputConsumer.
|
||||
/// Supports tap and hold/drag logic, with interactable delegation and debug logging.
|
||||
/// </summary>
|
||||
public class InputManager : MonoBehaviour
|
||||
{
|
||||
private const string UiActions = "UI";
|
||||
private const string GameActions = "PlayerTouch";
|
||||
|
||||
private static InputManager _instance;
|
||||
private static bool _isQuitting = false;
|
||||
|
||||
@@ -50,6 +65,49 @@ public class InputManager : MonoBehaviour
|
||||
positionAction = playerInput.actions.FindAction("TouchPosition", false);
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
SceneManagerService.Instance.SceneLoadCompleted += SwitchInputOnSceneLoaded;
|
||||
SwitchInputOnSceneLoaded(SceneManager.GetActiveScene().name);
|
||||
}
|
||||
|
||||
private void SwitchInputOnSceneLoaded(string sceneName)
|
||||
{
|
||||
if (sceneName.ToLower().Contains("mainmenu"))
|
||||
{
|
||||
Debug.Log("[InputManager] SwitchInputOnSceneLoaded - Setting InputMode to UI for MainMenu");
|
||||
SetInputMode(InputMode.UI);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("[InputManager] SwitchInputOnSceneLoaded - Setting InputMode to PlayerTouch");
|
||||
SetInputMode(InputMode.Game);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetInputMode(InputMode inputMode)
|
||||
{
|
||||
switch (inputMode)
|
||||
{
|
||||
case InputMode.UI:
|
||||
playerInput.actions.FindActionMap(UiActions).Enable();
|
||||
playerInput.actions.FindActionMap(GameActions).Disable();
|
||||
break;
|
||||
case InputMode.Game:
|
||||
playerInput.actions.FindActionMap(UiActions).Disable();
|
||||
playerInput.actions.FindActionMap(GameActions).Enable();
|
||||
break;
|
||||
case InputMode.GameAndUI:
|
||||
playerInput.actions.FindActionMap(UiActions).Enable();
|
||||
playerInput.actions.FindActionMap(GameActions).Enable();
|
||||
break;
|
||||
case InputMode.InputDisabled:
|
||||
playerInput.actions.FindActionMap(UiActions).Disable();
|
||||
playerInput.actions.FindActionMap(GameActions).Disable();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
if (tapMoveAction != null)
|
||||
@@ -172,4 +230,5 @@ public class InputManager : MonoBehaviour
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,6 +96,9 @@ public class LevelSwitch : MonoBehaviour
|
||||
// Setup menu with data and callbacks
|
||||
menu.Setup(switchData, OnMenuConfirm, OnMenuCancel);
|
||||
_isActive = false; // Prevent re-triggering until menu is closed
|
||||
|
||||
// Switch input mode to UI only
|
||||
InputManager.Instance.SetInputMode(InputMode.UI);
|
||||
}
|
||||
|
||||
private async void OnMenuConfirm()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using UnityEngine;
|
||||
using AppleHills.Core.Settings;
|
||||
using Input;
|
||||
|
||||
namespace Minigames.DivingForPictures
|
||||
{
|
||||
|
||||
8
Assets/Scripts/Test.meta
Normal file
8
Assets/Scripts/Test.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 23fdb60880dd05846a6e0d3681a02242
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -31,7 +31,7 @@ MonoBehaviour:
|
||||
surfacingSpawnDelay: 5
|
||||
initialTileCount: 3
|
||||
tileSpawnBuffer: 1
|
||||
moveSpeed: 2
|
||||
moveSpeed: 1
|
||||
speedUpFactor: 0
|
||||
speedUpInterval: 10
|
||||
maxMoveSpeed: 12
|
||||
|
||||
Reference in New Issue
Block a user