씬 전환 시 Gamemanager에서 새로운 Player를 참조할 수 있게 했다.
public class GameManager : SingleTon<GameManager>
{
public Player Player { get; private set; }
protected override void Awake()
{
base.Awake();
Player = FindObjectOfType<Player>();
SceneManager.sceneLoaded += OnSceneLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
Player = FindObjectOfType<Player>();
}
private void OnDestroy()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
public void LoadScene(string sceneName)
{
UIManager.Instance.ClearUI();
SceneManager.LoadScene(sceneName);
}
}
플레이어와 관련된 것(컨트롤러)들은 재참조해줘야 해서
void Start()
{
camera = Camera.main;
PlayerController input = GameManager.Instance.Player.Input;
input.playerActions.Interection.started += OnInteractInput;
SceneManager.sceneLoaded += OnInteract;
}
private void OnInteract(Scene scene, LoadSceneMode mode)
{
PlayerController input = GameManager.Instance.Player.Input;
input.playerActions.Interection.started += OnInteractInput;
}
똑같이 sceneLoaded를 사용해서 해결했다.