v10 全量评审:修复 TD-06 至 TD-12(InputReader 移除资产扫描回退 / EmergencySave 解除 LocalFileStorage 直接依赖 / AccessibilityManager 注册 IAccessibilityService / HUDController HP/SpringIcon SetActive 复用 / MovingPlatform 缓存 WaitForSeconds / RewardSO IRewardTarget 解耦 Quest←Player 依赖 / CrashReporter 频率限制崩溃日志)
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
using UnityEngine;
|
||||
using BaseGames.Core;
|
||||
using BaseGames.Core.Events;
|
||||
|
||||
namespace BaseGames.Support.Accessibility
|
||||
{
|
||||
/// <summary>
|
||||
/// 无障碍功能管理器(架构 16_SupportingModules §6.1)。
|
||||
/// 响应设置变更,广播色盲模式事件;提供 CanPlayScreenShake() 供 FeedbackSystem 查询。
|
||||
/// 响应设置变更,广播色盲模式事件;通过 ServiceLocator 提供 IAccessibilityService 查询接口。
|
||||
/// </summary>
|
||||
public class AccessibilityManager : MonoBehaviour
|
||||
public class AccessibilityManager : MonoBehaviour, IAccessibilityService
|
||||
{
|
||||
[Header("设置资产")]
|
||||
[SerializeField] private AccessibilitySettingsSO _settings;
|
||||
@@ -16,21 +17,20 @@ public class AccessibilityManager : MonoBehaviour
|
||||
[SerializeField] private ColorblindModeEventChannelSO _onColorblindModeChanged;
|
||||
[SerializeField] private BoolEventChannelSO _onScreenShakeChanged;
|
||||
|
||||
private static AccessibilityManager _instance;
|
||||
|
||||
// ── 静态查询接口(供 FeedbackSystem 使用) ───────────────────────────────
|
||||
public static bool CanPlayScreenShake()
|
||||
=> _instance == null || (_instance._settings != null && _instance._settings.ScreenShake);
|
||||
// ── IAccessibilityService ─────────────────────────────────────────────
|
||||
/// <summary>当前设置是否允许播放屏幕震动效果。</summary>
|
||||
public bool CanPlayScreenShake()
|
||||
=> _settings == null || _settings.ScreenShake;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (_instance != null && _instance != this)
|
||||
if (ServiceLocator.GetOrDefault<IAccessibilityService>() != null)
|
||||
{
|
||||
Debug.LogWarning("[AccessibilityManager] 已存在实例,请确保本组件仅放置在 Persistent 场景中。", this);
|
||||
Destroy(this);
|
||||
return;
|
||||
}
|
||||
_instance = this;
|
||||
ServiceLocator.Register<IAccessibilityService>(this);
|
||||
if (_settings != null)
|
||||
_settings.Load();
|
||||
}
|
||||
@@ -44,7 +44,7 @@ public class AccessibilityManager : MonoBehaviour
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (_instance == this) _instance = null;
|
||||
ServiceLocator.Unregister<IAccessibilityService>(this);
|
||||
}
|
||||
|
||||
/// <summary>应用新的设置并持久化。</summary>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace BaseGames.Support.Accessibility
|
||||
{
|
||||
/// <summary>
|
||||
/// 无障碍功能查询接口(架构 16_SupportingModules §6.1)。
|
||||
/// 由 <see cref="AccessibilityManager"/> 实现,通过 ServiceLocator 注册。
|
||||
/// </summary>
|
||||
public interface IAccessibilityService
|
||||
{
|
||||
/// <summary>当前设置是否允许播放屏幕震动效果。</summary>
|
||||
bool CanPlayScreenShake();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3cadc76323b714844b522781d7a5d012
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user