using System.Collections; using UnityEngine; using MoreMountains.Feedbacks; namespace BaseGames.Feedback { /// /// 场景物件反馈适配器(防腐层)。 /// 将世界/关卡对象(机关、平台、谜题等)与 Feel(MMF_Player)完全解耦: /// - 世界对象只引用 SceneFeedback,不知道 Feel 的存在 /// - 若将来替换 Feel,只修改此文件即可,所有世界对象无需变动 /// /// 用法: /// 1. 在需要反馈的 GameObject 上添加 SceneFeedback 组件 /// 2. 在 Inspector 中将 MMF_Player 拖入 _player 槽位 /// 3. 调用者持有 [SerializeField] SceneFeedback 引用,调用 .Play() 或 yield return .PlayAndWait() /// [AddComponentMenu("BaseGames/Feedback/Scene Feedback")] public class SceneFeedback : MonoBehaviour { [SerializeField] private MMF_Player _player; /// 播放此反馈。若 _player 未配置则静默跳过。 public void Play() => _player?.PlayFeedbacks(); /// 立即停止正在播放的反馈。 public void Stop() => _player?.StopFeedbacks(); /// /// 播放反馈并等待其完成后继续。若 _player 未配置则立即返回。 /// 用于需要等待淡出/淡入完成后再执行下一步的场景(如传送、开门等)。 /// public IEnumerator PlayAndWait() { if (_player == null) yield break; _player.PlayFeedbacks(); while (_player.IsPlaying) yield return null; } } }