1. Today
너무 슬프다. 도대체 어디가 문제인지 도통 모르겠다. 4시간 째 이 녀석만 붙들고 있었더니 머리가 아플 지경이다. 간단한 부분을 놓치고 있는 것 같다는 느낌이 들긴 하는데 역시나 모르겠다.
문제는 UIManager에서 GameManager로 몇 줄의 코드를 옮기는데서 시작되었다.
아래는 UIManager 코드다. 여기서 GameObject인 Player과 characterStatsHandler, playerStatSO까지 이렇게 세 녀석을 GameManager로 옮기는 와중에 오브젝트가 null이라는 에러를 만났다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using System;
public class UIManager : MonoBehaviour
{
public static UIManager Instance = null;
[SerializeField]
private GameObject player;
[SerializeField]
private GameObject playerPanel;
[SerializeField]
private GameObject menuPanel;
[SerializeField]
private GameObject buttonPanel;
[SerializeField]
public GameObject statusPanel;
[SerializeField]
public TextMeshProUGUI menuText;
public CharacterStatsHandler characterStatsHandler;
public PlayerStatSO playerStatSO;
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
Init();
}
private void Init()
{
characterStatsHandler = player.GetComponent<CharacterStatsHandler>();
Debug.Log("characterStatsHandler" + characterStatsHandler.name);
playerStatSO = characterStatsHandler.currentStats.playerStatSO;
Debug.Log("playerStatSO" + playerStatSO.name);
// characterStatsHandler = GameManager.Instance.characterStatsHandler;
// playerStatSO = GameManager.Instance.playerStatSO;
menuText = menuText.GetComponent<TextMeshProUGUI>();
}
public void TurnOnStatusPanel()
{
SetMenuText(Menu.Status);
buttonPanel.SetActive(false);
statusPanel.SetActive(true);
}
public void TurnOffStatusPanel()
{
SetMenuText(Menu.Menu);
statusPanel.SetActive(false);
buttonPanel.SetActive(true);
}
private void SetMenuText(Menu menu)
{
switch (menu)
{
case Menu.Menu:
menuText.text = "메뉴";
break;
case Menu.Status:
menuText.text = "상태창";
break;
case Menu.Inventory:
menuText.text = "인벤토리";
break;
case Menu.Shop:
menuText.text = "상점";
break;
}
}
private enum Menu
{
Menu,
Status,
Inventory,
Shop
}
}
이상하다. 분명 인스펙터 상에서도 같은 Player 오브젝트를 맵핑해두었고, 심지어 코드 오타가 있나 해서 그대로 복붙해도 똑같은 상황이다.
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance = null;
[SerializeField]
private GameObject player;
public CharacterStatsHandler characterStatsHandler;
public PlayerStatSO playerStatSO;
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
Init();
}
private void Init()
{
characterStatsHandler = player.GetComponent<CharacterStatsHandler>();
Debug.Log("characterStatsHandler" + characterStatsHandler.name);
playerStatSO = characterStatsHandler.currentStats.playerStatSO;
Debug.Log("playerStatSO" + playerStatSO.name);
}
}
너무나도 어지럽다.. 도대체 무엇이 문제인가. 으아아아아 해결하고 싶어 미치겠다.
'취준 > 스파르타 내일배움캠프 Unity' 카테고리의 다른 글
23.09.26 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.48 (0) | 2023.09.26 |
---|---|
23.09.22 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.44 (0) | 2023.09.23 |
23.09.20 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.44 (0) | 2023.09.21 |
23.09.19 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.43 (0) | 2023.09.19 |
23.09.18 - 스파르타 내일배움캠프 Unity 8기 [TIL] - Day.42 (0) | 2023.09.18 |