********์ ๋ ๊ธ์ญ์ํจ******
public class Unit
{
DataManager dataMgr;
public int unitID;
public UnitStat unitStat;
void Awake()
{
dataMgr = GameObject.Find("DataManager").Getcomponent<DataManager>();
}
void Start()
{
unitStat = dataMgr.AllUnitList[unitID]; // < ๋ฌธ์ ์๊น
}
[System.Serializable]
public struct UnitStat
{
int m_nData;
int m_nData2;
public void Init(nData)
{
m_nData = nData;
m_nData = nData2;
}
}
}
==========================================
public class DataManager
{
public List<Unit.UnitStat> AllUnitList;
private void Awake()
{
DontDestroyOnLoad(this);
}
void Start()
{
ReadUnitTextToList();
}
void ReadUnitTextToList()
{
string[] line = UnitDatabase.text.Substring(0, UnitDatabase.text.Length - 1).Split('\n');
for (int i = 0; i < line.Length; i++)
{
string[] row = line[i].Split('\t');
Unit.UnitStat unitStat = new Unit.UnitStat();
unitStat.Init(int.Parse(row[0]), int.Parse(row[1]));
AllUnitList.Add(unitStat);
}
}
}
================
public class SpawnManager : MonoBehaviour
{
ย ย public GameObject[] test;
ย ย void Start()
ย ย {
ย ย ย ย TestSpawn();
ย ย }
ย ย public void TestSpawn()
ย ย {
ย ย ย ย for(int i = 0; i < test.Length; i++)
ย ย ย ย Instantiate(test[i], new Vector2(30-i, 30-i), Quaternion.identity);
ย ย }
}
Prefab์ Unit.Cs ์ปดํฌ๋ํธ์ ๋ถ์ฌ์คํ ์ธ์คํํฐ์์ UnitID ๊ธฐ์
ํด์ ๋ง๋ค์์ต๋๋ค.ย
๊ทธ๋ฆฌ๊ณ ์์ ์ ํ์ฌ์์ย DataManager๊ฐ ๊ฒ์์ ์กด์ฌํ๊ณ ์ ํ ํ Main Scene์ผ๋ก ๋์ด๊ฐ๋ฉด์ย
Unit ์ปดํฌ๋ํธ๊ฐ ๋ถ์ด์๋ย Prefabs๋ฅผ ์คํ์ผ์ย Instantiate ํจ์๋ก ์คํฐํ๋๋ฐย Null์ด๋น๋๋ค.
์ด๋ฐ์์ผ๋ก ์ค๊ณ๋ฅผ ํ๋๋ฐ ๋ญ๊ฐ ๋ฌธ์ ์ธ์ง ๋ชจ๋ฅด๊ฒ ๋ค์... ์ด์ ๋ง ํ123์ ๋ค๋๋ฉด์ ๊ณต๋ถํ๊ณ ์๋ ์ฝ๋ฆฐ์ด์
๋๋ค...
๋์ถฉ ์ค ์ฝ๋๋ก๋ ์๋ฌด๋ต๋ณ๋๋ชปํด์ค๋ค. ๋ฐ์ DataManagerํด๋์ค ์ฝ๋ ์ ๋นํ ์๋ผ๋ถ์๋. ์ ๊ฒ ์คํ๋ ๋ฆฌ๊ฐ ์์์
์์ ํ์ต๋๋ค ใ ใ
์, ์ ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋ ค๋ฉด DataManager.Start()๊ฐ ๋ถ๋ฆฐ ํ์ Unit.Start๊ฐ ๋ถ๋ ค์ผ ์ ๋๋ก ๋๋ค. ๊ทผ๋ฐ Startํจ์๋ ์ด๋ค๊ฒ ๋จผ์ ๋ถ๋ฆด์ง ์ฅ๋ด๋ชปํ๋ค. ReadUnitTextToList()๋ฅผ Awakeํจ์์์ ํธ์ถํ๊ฒ ํ๋ ์ง ๊ฐ์, ๋จผ์ ๋ถ๋ฆฌ๊ฒ๋ ํด
์ ๋ํฐ MonoBehaviour ์คํฌ๋ฆฝํธ์ ๋นํธ์ธ ํจ์๋ค์ ๋ถ๋ฆฌ๋ ์์๊ฐ ์์. Awake()๊ทธ๋ค์์ Start()์. ์ด๊ฑด ๋ช ์ฌํ๊ณ ์์
์ฃ์กํฉ๋๋ค. ์ ์ค๋ช ์ด ๋น์ฝํด์ ์ํฉ์ ๋ฌ์ด ์๋ชป๋์๋ค์ DataManager๋ ์ด์ ์ฌ ๋ถํฐ ์กด์ฌํด์์์ต๋๋ค ใ ใ
์ด๊ฑฐ ์ด๋ฐ์์ผ๋ก ์ง๋ฌธํ๋๊ฑด ์ค๋ฌด๊ณ ๊ฐ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ๋์. ์๋๋ฉด ๋๊ฐ ์๋ฌ์์ ๋ถ๋ช Null์๋ฌ๊ฐ ๋ฌ๋ค๊ณ ์ปดํ์ผ๋ฌ๊ฐ ๋งํด์คฌ์ผ๋ฉด, ๋๊ฐ ํ ํ๋์ ์ Null์ด ๋ฐ์ํ๋์ง ์ฐพ์๋ด์ผ ํ๋๊ฑฐ์ผ. dataMgr๊ฐ Null์ธ๊ฐ, dataMgr.AllUnitList๊ฐ Null์ธ์ง๋ฅผ ํ์ธํด๋ด์ผํด. dataMgr๊ฐ Null์ด๋ผ๋ฉด GameObject.Find์์ ์ ๋๋ก ์๊ฐ์ ธ์จ๊ฑด์ง ๋ ํ์ธํด๋ด์ผ ํ๋๊ฑฐ๊ณ . AllUnitList๊ฐ Null์ด๋ผ๋ฉด ๊ทธ๊ฑด ํ๋ฅ ์ด ๋ฐ๋ฐ์ด์ผ. ์๋๋ List ๋ณ์ ์ ์ธํด๋๊ณ new๋ ์ํด์คฌ์ผ๋ฉด AllUnitList.Add์์๋ถํฐ ํฐ์ก์ด. ๊ทผ๋ฐ ๋๊ฐ UnitStat์ Serailized๋ฅผ ํ๊ธฐ ๋๋ฌธ์ DataManager๊ฐ ๋์ ์์ฑ๋๋ค๋ฉด ๋์ด๊ณ ์ฌ์ ์ ์ด๋ถํฐ ์์์ผ๋ฉด ๋์ด ์๋๊ฒ ๋ผ
ใด์ง์ง ๋ง์ง๋ง ๋๊ธ๋๋ฌด ๊ฐ์ฌํฉ๋๋ค... ๋๋ถ์ ์ฐพ์์ต๋๋ค ์ง๋ฌธ๊ธ์ฌ๋ฆฌ๋ฉด์ dataMgr = GameObject.Find("DataManager").Getcomponent();
๊ฐ ์ ์ฝ๋์๋ ๋น ์ ธ์์๋ค์..์ ๋ง ๊ฐ์ฌํฉ๋๋ค ์๊ฒจ๋ฃ๊ฒ์ต๋๋ค
์ฐพ์๋ค๋ ๋คํ์ด๋ค. ์ ๋ฐ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ฝ๊ณ ๊ทธ๊ฑธ ๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ฐพ์ด. ์ง์ง ๊ธฐ๋ณธ์์์ค์๋ ๊ฐ ๊ธฐ๋ณธ ์์์. ํ์ดํ
๋ฌธ๋ฒ๋ฐฐ์ด์ง ์ผ๋ง์๋์ ์์ ์ด์์ด์ ๋จ์๋๋ฝ์ผ๊ฑฐ๋ผ๊ณ ์๊ฐ๋ชปํ๋ค์ ์ฝ์ด์ฃผ์ ๋ถ๋ค ๊ฐ์ฌํฉ๋๋ค.
๋๋ถ๋ถ์ ๋ฒ๊ทธ๋ ์ฒ ์์ค์ ๋จ์๋๋ฝ์ผ๊ฑธ
๋ผ์ด๋ ์จ๋ด. ๋๋ก ๋ ผ๋ฆฌ์ ์ธ ์ค์๊น์ง ์ฝ์นญํด์ฃผ๋๋ผ