씬 전환 기능 및 씬이 변경되어도 플레이어 정보를 유지하도록 게임 매니저 구현
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
[RequireComponent(typeof(Collider2D))] // 트리거 판정을 위해 Collider2D가 부착되어 있어야 합니다.
|
||||
public class WallTransition : MonoBehaviour
|
||||
{
|
||||
[Header("전환될 목표 씬 이름")]
|
||||
[SerializeField] private string targetSceneName = "battleStage";
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// 물리적인 밀어냄 현상을 방지하고 통과 감지만 할 수 있도록 트리거(Trigger)로 지정합니다.
|
||||
Collider2D col = GetComponent<Collider2D>();
|
||||
if (col != null && !col.isTrigger)
|
||||
{
|
||||
col.isTrigger = true;
|
||||
Debug.LogWarning($"[Transition] {gameObject.name}에 부착된 Collider2D를 트리거(Is Trigger = true)로 자동 갱신했습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerEnter2D(Collider2D other)
|
||||
{
|
||||
// 닿은 물체가 플레이어 캐릭터인지 확인합니다.
|
||||
Player player = other.GetComponent<Player>();
|
||||
if (player != null)
|
||||
{
|
||||
Debug.Log($"[Transition] 플레이어 '{player.CharacterName}'가 우측 경계 성벽에 접촉했습니다.");
|
||||
|
||||
// 1. 싱글톤 GameManager 인스턴스가 존재할 경우 현재 플레이어의 정보(이름, 세대, HP)를 세이브합니다.
|
||||
if (GameManager.Instance != null)
|
||||
{
|
||||
GameManager.Instance.SavePlayerData(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("[Transition] 씬에 GameManager 싱글톤 오브젝트가 존재하지 않아 플레이어 정보 임시 세이브를 스킵합니다.");
|
||||
}
|
||||
|
||||
// 2. 유니티 씬 매니저를 통해 목표 씬(battleStage)을 즉시 로드합니다.
|
||||
Debug.Log($"[Transition] {targetSceneName} 씬으로 화면을 전환합니다.");
|
||||
SceneManager.LoadScene(targetSceneName);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user