using UnityEngine;
public class PlayerGold : MonoBehaviour
{
private int currentGold = 1000;
public int CurrentGold
{
set => currentGold = Mathf.Max(0, value);
get => currentGold;
}
}
๋์ถฉ ํ๋ ์ด์ด ๊ณจ๋ ๊ด๋ฆฌ ์คํฌ๋ฆฝํธ
using UnityEngine;
public class Manager : MonoBehaviour
{
ย ย private PlayerGold playergold;
ย ย void Awake()
ย ย {
ย ย ย ย var obj = FindObjectsOfType<Manager>();
ย ย ย ย if (obj.Length == 1)ย
ย ย ย ย {
ย ย ย ย ย ย DontDestroyOnLoad(gameObject);ย
ย ย ย ย }
ย ย ย ย elseย
ย ย ย ย {ย
ย ย ย ย ย ย Destroy(gameObject);ย
ย ย ย ย }
ย ย }
ย ย void Update()ย
ย ย {
ย ย ย ย if (Input.GetMouseButtonDown(0))
ย ย ย ย {
ย ย ย ย ย ย playergold.CurrentGold += 10;
ย ย ย ย }
ย ย }
}
์ด๊ฑด ๊ฒ์ ๊ด๋ฆฌ ์คํฌ๋ฆฝํธ๋ก ์ฌ ๋์ด๊ฐ๋ ์์์ด์ง๋ ์ค๋ธ์ ํธ์
ํ์ธ์ฉ์ผ๋ก ๋ง์ฐ์ค ํด๋ฆญํ๋ฉด ๊ณจ๋ 10๊ณจ ๋ค์ด ์ค๊ฒ๋ ํ๋๋ฐ ์ ์๋๋์ง ๋ชจ๋ฅด๊ฒ ์
NullReferenceException: Object reference not set to an instance of an object
Manager.Update () (at Assets/Scripts/Manager.cs:24)
PlayerGold๋ด ๋ ํผ๋ฐ์ค๊ฐ ์๋ค์
๋งค๋์ ์คํฌ๋ฆฝ๋จ์ PlayerGold์ Awake์ ๋ ํผ๋ฐ์ค ๋ฃ๊ฑฐ๋ private ์์ [SerializeField] ๋ฃ์ด์ ์ง์ ๋ฃ์ผ์ผ
์ธ์คํด์ค ๊ฐ๋ ์ด ์์ง ์ ๋ฆฝ์ด ์๋๊ฑฐ๊ฐ์๋ฐ ํ๋กํผํฐ๋ ์์ฐ๋๊ฑฐ๋
์ด๋ ์์ ๊ฐ์ ธ์จ๊ฑฐ ๊ฐ์กฐ ํด๋ณด๋ฉด์ ์ฐ์ตํ๋ ๊ฑฐ๋ผ ์ ๋ชฐ๋ผ!
playerGold๊ฐ ์ด๋ค playerGold๋ฅผ ๋งํ๋๊ฑด์ง Manager์์๋ ๋ชจ๋ฆ
์ด์ ๋ ์์ค์ด๋ฉด ๊ฑ ๋๊ฐ๋ฆฌ ๊นจ์ง๋ฉด์ ์ ๊ทธ๋ฐ์ง ์์๊ฐ์ผ ์ค๋ ฅ์ด ํ๋๋๋ฐ
์ฑ๊ธํค ์ฐ๊ณ ์ถ์๋๊ฑธ๊น?