축제 윤지후져루트
This commit is contained in:
@@ -9,6 +9,13 @@ public class LocalManager : MonoBehaviour,ISceneInitializable
|
||||
[SerializeField] private string _nextSceneName;
|
||||
[SerializeField] private AudioClip _caffebeneBGM;
|
||||
|
||||
// 일반 씬 전환(NextSceneWithBgm)용 전용 BGM과, 재생 후 씬 전환까지의 대기(초, 0이면 즉시 전환)
|
||||
[SerializeField] private AudioClip _sceneChangeBGM;
|
||||
[SerializeField, Min(0f)] private float _sceneChangeBgmPlayTime = 0f;
|
||||
|
||||
[Tooltip("런타임에 번호로 골라 _sceneChangeBGM을 교체할 BGM 후보들 (SetSceneChangeBgm(번호)로 선택)")]
|
||||
[SerializeField] private AudioClip[] _sceneChangeBgmOptions;
|
||||
|
||||
// 흑백 전환에 걸리는 시간(초)
|
||||
[SerializeField, Min(0f)] private float _grayscaleFadeTime = 1.5f;
|
||||
// BGM 재생 시작 후 씬 전환까지 대기 시간(초)
|
||||
@@ -33,6 +40,44 @@ public void NextScene(int delay)
|
||||
_ = Util.RunDelayed((float)delay,()=>SceneLoadManager.Instance.RequestSceneChange(_nextSceneName));
|
||||
}
|
||||
|
||||
// 일반 씬 전환 + 전용 BGM. delay 뒤 전용 BGM을 재생하고(있으면), _sceneChangeBgmPlayTime 만큼 두었다가 씬 전환.
|
||||
// 카페 시퀀스와 달리 흑백/이미지 연출은 없다. UnityEvent에서 호출 가능.
|
||||
public void NextSceneWithBgm(int delay)
|
||||
{
|
||||
_ = NextSceneWithBgmSequence(delay);
|
||||
}
|
||||
|
||||
// UnityEvent에서 번호로 호출 — _sceneChangeBgmOptions[index]를 다음 NextSceneWithBgm에 쓸 전용 BGM으로 교체한다.
|
||||
public void SetSceneChangeBgm(int index)
|
||||
{
|
||||
if (_sceneChangeBgmOptions == null || index < 0 || index >= _sceneChangeBgmOptions.Length)
|
||||
{
|
||||
Debug.LogWarning($"[LocalManager] 잘못된 Scene Change BGM 번호: {index} (후보 {(_sceneChangeBgmOptions != null ? _sceneChangeBgmOptions.Length : 0)}개)");
|
||||
return;
|
||||
}
|
||||
_sceneChangeBGM = _sceneChangeBgmOptions[index];
|
||||
}
|
||||
|
||||
private async Awaitable NextSceneWithBgmSequence(int delay)
|
||||
{
|
||||
try
|
||||
{
|
||||
await Awaitable.WaitForSecondsAsync((float)delay, destroyCancellationToken);
|
||||
|
||||
if (_sceneChangeBGM != null && SoundManager.Instance != null)
|
||||
SoundManager.Instance.PlayOverrideBGM(_sceneChangeBGM);
|
||||
|
||||
if (_sceneChangeBgmPlayTime > 0f)
|
||||
await Awaitable.WaitForSecondsAsync(_sceneChangeBgmPlayTime, destroyCancellationToken);
|
||||
|
||||
SceneLoadManager.Instance.RequestSceneChange(_nextSceneName);
|
||||
}
|
||||
catch (System.OperationCanceledException)
|
||||
{
|
||||
// 씬 전환 등으로 자신이 파괴되어 취소됨
|
||||
}
|
||||
}
|
||||
|
||||
public void CaffebeneNextSceneChange(int delay)
|
||||
{
|
||||
_ = CaffebeneSequence(delay);
|
||||
|
||||
Reference in New Issue
Block a user