public class Inventory : MonoBehaviour
{
ย ย public string testinventory = "์ฌ๊ธฐ๋ ์ธ๋ฒคํ ๋ฆฌ";
์ด๋ ๊ฒ ์ ์ธํด๋์ ์ํ์์
public class Player : MonoBehaviour
{
ย ย Inventory inventory;
ย void Awake()
ย ย {
ย ย ย ย ย inventory = GetComponent<Inventory>();
ย ย }
์ด๋ ๊ฒ ๋ฐ์์์ด
ย void Update()
ย ย {
ย ย ย ย if (Input.GetKeyDown(KeyCode.R))
ย ย ย ย ย ย Debug.Log(inventory.testinventory);
ย ย ย }
๊ทธ๋ฆฌ๊ณ Rํค ๋๋ฅด๋ฉด string๋ฐ์์ค๊ฒํด๋๊ณ ํ ์คํธํด๋ณด๋ฉด,
NullReferenceException: Object reference not set to an instance of an object
Player.Update () (at Assets/Scripts/Player.cs:52)
์๊ฑฐ ๋ธ....
ํํด๋์ค ๋ณ์๋ ๋ฉ์๋ ๋ฐ์์ค๋ ๊ฒ,
find
getcomponent
static
์๊ฑฐ ์ธ ๊ฐ ์๋ค๊ณ ์๋๋ฐ,
getcomponent๋ ๋งจ๋ ์ ๋์,
๋ฌด๋ฆฌํ๊ฒ static์ผ๋ก ๋ค ๋ฐ์์ณ๋๊ณ ๋๋ ธ์๋๋ฐ,
์๋ฌด๋ฆฌ ๋ด๊ฐ ๊ฐ์กฐ๋นฑ์ด๋๋ผ๋,ย
์ด์ ๋ ๊ทธ ์ด์ ๋ฅผ ์๊ณ ์ถ๋ค...ใ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๊ฐ์กฐ๋นฑ์ด๋ผ, ์ง๋ ฌํ๊ฐ ๋ญ์ง ์ ๋ชจ๋ฆ... ์์ [SerializeField]๋ฐ์์ฃผ๋๊ฑฐ ๊ทธ๊ฒ ๋ง์ํ์๋ ๊ฒ์ ๋๊น ํ๋
์ฌ์ฉ๋ฒ ์ ๋ชฐ๋ผ์, ์ธ๋ฒคํ ๋ฆฌ ํด๋ผ์ค์ ์๋ ๋ณ์ ์์ [SerializeField]๋ถ์ฌ๋ณด๊ณ , ํ๋ ์ด์ด Inventory inventory ์์๋ ๋ถ์ฌ๋ดค๋๋ฐ, ๋ ๋ค ์ ๋๊ธด ํจ...ใ ใ ์ผ๋จ ๋ธ๋ก๊ทธ๊ฐ์๋ฐ์ ๋์ถฉ ์ง๋ ฌํ ์ฝ์ด๋ดค๋๋ฐ, ์ ๋ชจ๋ฅด๊ฒ ์ด์ ์ ํฌ๋ธ ๋ช ๊ฐ์ ๋ณด๋ฉฐ ๊ณต๋ถ ์ข ํด๋ด์ผ๊ฒ ์ฌ
ํ๋ ๋๋ถ์ ์๋ฌ ์ ๋๊ณ ํธ์ถ ์ฑ๊ณตํจ!ใณใณ ์ต์คํํฐ์ Player ์คํฌ๋ฆฝํธ์ Inventory ์๊ฒจ์, Inventory ์ ํํ๋ฉด ๋๊ธด ํ๋๋ฐ!! ๋ฏธ๋ฆฌ ์ค์ ์ํ์์ ํ๋ ์ด ๋๋ฅด๋ฉด None(Inventory)๋ก ๋ฐ๋์ด์, ๊ฒ์ ์ค์ ์ค์ ํด์ผ๋ง ๋๋๋ผ๋...; ์ง๋ ฌํ ๊ณต๋ถ ์ข ํด๋ด์ผ๊ฒ ์ฌ!
[SerializeField]๋ public์ผ๋ก ์ ์ธํด์ ์ง์ ์ฐธ์กฐํ๊ฑฐ๋ class Inventory ๊ฐ ๋ค์ด์๋ ์ค๋ธ์ ํธ๋ฅผ ๋จผ์ ์ฐพ์์ ์ฐธ์กฐํ๊ณ ๊ฑฐ๊ธฐ์ .Getcomponent<>() ์จ์ผ๋๋ ๊ฑธ๋ก ์
์์ ์ฐธ์ํ๋์ด๋ ๊ฐ์ ๋ง ๋ง์ง? ์์งํ ์ ๊ทธ๋ฐ์ง, ์ดํด๊ฐ 100% ๋์ง ์์์ ๊ณต๋ถ ์ข ํด์ผ๊ฒ ์~
์ธ๋ฒคํ ๋ฆฌ ์คํฌ๋ฆฝํธ๊ฐ ํ๋ ์ด์ด๋ ๊ฐ์ ์ค๋ธ์ ํธ์ ์๋ค๋ฉด ๊ทธ๋ฅ getcomponent<์ธ๋ฒคํ ๋ฆฌ>์ด๋ ๊ฒ ํด๋ ๋์ง๋ง ๋ค๋ฅธ object์ ๋ถ์ด์๋ค๋ฉด inventory = GameObject.Find("์ธ๋ฒคํธํ ๋ฆฌ๊ฐ ๋ถ์ ์ค๋ธ์ ํธ ์ด๋ฆ").GetComponent()์ด๋ ๊ฒ ํด์ผ์ง
Find๋ ์ฐ์ง๋ง๋ผ๊ณ ๋ฐฐ์์...ใ
Find๊ฐ ๊ฐ๋ ํ๋๋ฒ ์ฐ๋๊ฑด ๊ด์ฐฎ์ ์ ๋ฐ์ดํธ ํฝ์ค๋์ ๋ฐ์ดํธ ์ด๋ฐ๋ฐ๋ค ๋ฃ์ด๋๊ณ ๊ทธ ์คํฌ๋ฆฝํธ ๋ฃ์๊ฒ ๋ง์ด๋์ค๋ฉด ๋ฌธ์ ๊ฐ๋๋๊ฑฐ์ง ํ์ํ ๋ ํ๋ฒ์ฉ ์ฐ๋๊ฑด ํฐ ๋ฌธ์ ์๊ธฐ์ง ์์๊ฑฐ์
ํ๊ธด ์ค์๊ฐ ๋ฐ๋ณต ํธ์ถ๋ง ์๋๋ฉด, 8๋นํธ ์ปดํฐ๋ ์๋๊ณ , ํฐ์ง๊ธฐ์ผ ํ๊ฒ ๋ ์ถ๊ธด ํจ. ๋งํ๋ฉด ์จ์ผ๊ฒ ์...
๋๋ฌด ๋ง์ ์ค๋ธ์ ํธ์์ find๋ก ์ด๊ธฐํ๋ฅผ ์ํค๋ฉด ์ฒ์์ ์ฌ์ ๋ถ๋ฅผ๋ ๋ฏธ์ธํ๊ฒ ๋ ๋๋ ค์ง๊ธด ํ ๊ฑฐ์ ๊ทธ๋ฅ ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ์๋ค๋ ์๋ฏธ๋ก ์ด ๊ฑฐ๋๊น ์ ๋นํ ์์ด์ ์ฌ์ฉํ๋ฉด ๋จ ๊ธ๊ณ ํ๋ค๋ณด๋ฉด find๋ก ์ฐพ์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์๊ฑฐ์ ํ๋ฆฌํน์ผ๋ก ๋ง๋ค์ด๋๋ค ์์ฑ์ํค๋ ๊ฒฝ์ฐ๋ผ๋๊ฐ..
GetComponent๋ ์์ ์ ์ค๋ธ์ ํธ์ ๋ถ์ด์๋ ์คํฌ๋ฆฝํธ ์ฐพ์์ค๋ ๊ธฐ๋ฅ์ด์์ Player์ค๋ธ์ ํธ์ Inventory์คํฌ๋ฆฝํธ๊ฐ ์์ผ๋ฉด ๋ชป์ฐพ์์ null์ด ๋ฉ๋๋ค. ๋ณธ๋ฌธ์ฒ๋ผ ์ฌ์ฉํ์๋ ค๋ฉด public ์ผ๋ก Inventory ์ ์ธํ์๊ณ , Inventory ์ค๋ธ์ ํธ๋ฅผ, Player ์ค๋ธ์ ํธ์ ์ ์ธ๋ Inventory ๋ณ์์ ์ฐ๊ฒฐํด์ค์ผ๋ฉ๋๋ค. ์ธ๋ฒคํ ๋ฆฌ๊ฐ ํ๋๋ผ๋ฉด ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์คํํฑ์ผ๋ก ์ ์ธํด์ ์ฌ์ฉํ์๋ ๊ฒ๋ ํธํด์. ์ฑ๊ธํด์ด๋ผ๋ ๋์์ธํจํด ์ฐพ์๋ณด์๊ณ ์ฌ์ฉํ์๋ฉด ๋ ๊ฒ๊ฐ์์
์, ์ธ๋ถ ๋ณ์๋ฅผ ๋ด๋ถ์์ public์ผ๋ก ์ ์ธํ๋ฉด ๋ญ ๋ค๋ฅธ๊ฐ ๋ณด๋ค์. ๋ฐฐ์๊ฐ๋๋ค.
์ ๊ฑฐ Start, Awake ์๋ ๊ณณ์์ ๊ฐ ํ ๋นํด์ฃผ๋ฉด ์ ๋์ ๋ค๋ฅธ ๊ณณ์์ ํ ๋นํด์ฃผ์๋ฉด ๋ ๋ฏ
๋ณธ๋ฌธ ๋ณด์ฌ awake์์ ์ก์์ค๊ธด ํ ๊ฑด๋ฐ... ์ธ๋ฒคํ ๋ฆฌ ์ ์ธ์ ์คํํธ๋ ์ด์จ์ดํฌ์์ ํ๋ผ๋ ๋ง์์ด์ ๊ฐ์?