From 249137850668184c8dec3514c95e7e6a7d4bb00d Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Mon, 2 Sep 2024 20:37:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=8A=A0=E5=85=A5=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E5=B1=8F=E5=B9=95=E6=95=88=E6=9E=9C=E7=9A=84=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/FixSystem/Effect.meta | 8 +++ .../FixSystem/Effect/ScreenEffectManager.cs | 72 +++++++++++++++++++ .../Effect/ScreenEffectManager.cs.meta | 11 +++ Assets/Scripts/FixSystem/Screen/MessageBox.cs | 4 +- 4 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 Assets/Scripts/FixSystem/Effect.meta create mode 100644 Assets/Scripts/FixSystem/Effect/ScreenEffectManager.cs create mode 100644 Assets/Scripts/FixSystem/Effect/ScreenEffectManager.cs.meta diff --git a/Assets/Scripts/FixSystem/Effect.meta b/Assets/Scripts/FixSystem/Effect.meta new file mode 100644 index 000000000..b4172fd0a --- /dev/null +++ b/Assets/Scripts/FixSystem/Effect.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b09cbe87914234241a07c227fe12e06a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/FixSystem/Effect/ScreenEffectManager.cs b/Assets/Scripts/FixSystem/Effect/ScreenEffectManager.cs new file mode 100644 index 000000000..7396ccf61 --- /dev/null +++ b/Assets/Scripts/FixSystem/Effect/ScreenEffectManager.cs @@ -0,0 +1,72 @@ +using UnityEngine; +using UnityEngine.UI; +using DG.Tweening; +using Yarn.Unity; + +public class ScreenEffectManager : MonoBehaviour +{ + public static ScreenEffectManager Instance { get; private set; } + + public Image blackoutPanel; // 黑屏面板 + public Image redFlashPanel; // 红色闪烁面板 + public float shakeDuration = 1.0f; // 震屏持续时间 + public float shakeIntensity = 0.1f; // 震屏强度 + + private Vector3 originalCameraPosition; + + private void Awake() + { + // 确保单例模式 + if (Instance != null && Instance != this) + { + Destroy(gameObject); + } + else + { + Instance = this; + DontDestroyOnLoad(gameObject); // 可选:保持在场景加载之间 + } + } + + private void Start() + { + // 保存初始相机位置 + originalCameraPosition = Camera.main.transform.localPosition; + } + + // 震屏效果 + [YarnCommand("shakeScreen")] + public void ShakeScreen() + { + Camera.main.transform.DOPunchPosition(Vector3.one * shakeIntensity, shakeDuration, 10, 1); + } + + // 黑屏淡入淡出效果 + [YarnCommand("fadeIn")] + public void FadeBlackout(bool enable, float duration) + { + if (enable) + { + blackoutPanel.gameObject.SetActive(true); + blackoutPanel.DOFade(1, duration).OnComplete(() => blackoutPanel.gameObject.SetActive(true)); + } + else + { + blackoutPanel.DOFade(0, duration).OnComplete(() => blackoutPanel.gameObject.SetActive(false)); + } + } + + // 红色闪烁效果 + [YarnCommand("flashRed")] + public void FlashRed(float duration) + { + redFlashPanel.gameObject.SetActive(true); + redFlashPanel.DOFade(1, duration / 2).OnComplete(() => + { + redFlashPanel.DOFade(0, duration / 2).OnComplete(() => + { + redFlashPanel.gameObject.SetActive(false); + }); + }); + } +} diff --git a/Assets/Scripts/FixSystem/Effect/ScreenEffectManager.cs.meta b/Assets/Scripts/FixSystem/Effect/ScreenEffectManager.cs.meta new file mode 100644 index 000000000..8ccec3af8 --- /dev/null +++ b/Assets/Scripts/FixSystem/Effect/ScreenEffectManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca4bf19c2266a604d87f4050b78b7d05 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/FixSystem/Screen/MessageBox.cs b/Assets/Scripts/FixSystem/Screen/MessageBox.cs index 55a8c3892..9307a7a06 100644 --- a/Assets/Scripts/FixSystem/Screen/MessageBox.cs +++ b/Assets/Scripts/FixSystem/Screen/MessageBox.cs @@ -18,7 +18,7 @@ public class MessageBox : MonoBehaviour else { Instance = this; - DontDestroyOnLoad(gameObject); // 可选:保持在场景加载之间 + //DontDestroyOnLoad(gameObject); // 可选:保持在场景加载之间 } } // Yarn Command处理方法 @@ -67,7 +67,7 @@ public class MessageBox : MonoBehaviour } // 设置为Null状态 - public void SetNull() + private void SetNull() { state.text = "NO SIGNAL"; state.color = Color.blue; // 蓝色