[๐ฌ]
list์์ null ๋จ๋ ์ด์ ๊ฐ ๋ญ๊น
์ต๋ช
(121.135)
2022-05-10 12:05
์ถ์ฒ 0
๊ตฌ๊ธ์ํธ์์ ๋ฐ์ดํฐ ๋ฐ์์์ ์ ์ฉํ๋๊ฑฐ ํ๋ ๋์ค์ ์๊ธด ๋ฌธ์ ๊ฐ ์๊ฒผ์ด.
public List
<ADatas
> _GroupDatas
;
private void Awake()
{
StartCoroutine(DownloadAdatas());
}
IEnumerator DownloadAdatas()
{
UnityWebRequest www
= UnityWebRequest
.Get(URL
);
yield return www
.SendWebRequest();
string data
= www
.downloadHandler
.text
;
_GroupDatas
= LoadGroupDatasList(data
);
}
List
<ADatas
> LoadGroupDatasList(string tsv
)
{
List
<ADatas
> list
= new List<ADatas>();
//TextAsset data = Resources.Load<TextAsset>(fileName);
if (tsv
== null) return null;
string[] lines
= tsv
.Split(new char[] { '\n' });
string[] row
;
{
for (int i
= 0; i
< lines
.Length
; i
++)
{
row
= lines
[i
].Split(new char[] { '\t' });
list
.Add(new ADatas(BigInteger
.Parse(row
[0]),
BigInteger
.Parse(row
[1]),
BigInteger
.Parse(row
[2])));
}
}
return list
;
}
public class ADatas
{
public BigInteger BaseCost
;
public BigInteger AddCost
;
public BigInteger Money
;
public ADatas(BigInteger BaseCost
, BigInteger AddCost
, BigInteger Money
)
{
this.BaseCost
= BaseCost
;
this.AddCost
= AddCost
;
this.Money
= Money
;
}
}
์ฝ๋๋ ์์ ๊ฐ๊ณ ๊ตฌ๊ธ์ํธ์์ ๋ฐ์์จ tsv๋ฅผ listํํด์ _groupdatas์ ๋ฃ์ด์ฃผ๊ณ ๋ค๋ฅธ ๊ณณ์์๋ ์ฌ์ฉํจ.
๋ฌธ์ ๋ tsv ํ
์คํธ๋ฅผ line, row๋ก ๋๋๋ ๊ฒ๋ ์ฑ๊ณตํ๊ณ ๊ทธ๊ฑธ _groupdatas์ ๋ฃ์ด์ฃผ๋ ๊ฒ๋ ์ฑ๊ณตํ๊ณ
downloadadatas ํจ์์์ _groupdatas ๋ฆฌ์คํธ๋ฅผ ํธ์ถํ๋ฉด ์ ๋์ค๋๋ฐ
์ ์ awake์์๋, ๋ค๋ฅธ ํด๋์ค์์๋ _groupdatas๋ฅผ ํธ์ถํ๋ฉด null์ด ๋ ๋ฒ๋ฆผ.
์๋งย downloadadatasย ํจ์๊ฐ ์ฝ๋ฃจํด์ผ๋ก ๋๊ธฐ ๋๋ฌธ์ด ์๋๊ฐ ์ถ์๋ฐ
์ด๊ฑฐ ์ธ์๋ ๋ฑํ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋๋ผ.
์๋ํ๋ฉด ์ด๋ฏธ ์ ์ struct๋ก ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ์ด๋ฒ์ class๋ก ๋ฐ๊พผ๊ฑฐ ์ธ์๋ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฑํ ์๊ฑฐ๋ .
์์ ์ฒ์๋ถํฐ null์ด ๋ ๋ฒ๋ฆฌ๋ฉด ๋ชจ๋ฅด๊ฒ ๋๋ฐย downloadadatasย ์์ ํธ์ถํ๋ฉด ์ ๋์ค๋ฉด์
๋ค๋ฅธ ๊ณณ์์๋ง null์ด ๋จ๋๊น ์ด์ด๊ฐ ์์...
ํน์ ์ง์๊ฐ๋ ์ด์ ๊ฐ ์์๊น?
์กฐ์ธํด์ฃผ๋ฉด ๊ณ ๋ง๊ฒ ์.. ใ
Awake ํจ์๋ ์คํฌ๋ฆฝํธ ์์๋ฅผ ์ ์ํด์ผ๋จ
https://docs.unity3d.com/kr/2020.3/Manual/class-MonoManager.html
์ฐธ๊ณ
์ค์ ๋ค ํด์คฌ์ ใ gameapplication ํ์ gamedata ์คํ๋๊ฒ ๋์ด ์๊ณ ์ค์ ๋ค๋ฅธ ํด๋์ค์์ gamedata์ ๋ณ์ ์ฌ์ฉํ๋๊ฑด ์ ๋ถ start์์๋ถํฐ ์์๋จ
์ ์ฝ๋ฃจํด?
ํต์ ์ด๋ผ์ ๋ฐ์ดํฐ ์ฌ๋๊น์ง ๋๊ธฐํด์ผ๋จ
๋๊ฐ ๋ง์๋ค. ์ฝ๋ฃจํด์ผ๋ก ํต์ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ์ด์ ๋ค๋ฅธ ์ ๋ค์ ์ฝ๋ ์ฃ๋ค ๋๋ ค๋ฒ๋ฆฌ๋ ์ ๊ฐ list ๋น์ด์๋๊ฑฐ ๋ณด๊ณ null ๋ฑ์๊ฑฐ ๊ฐ๋ค. ํต์ ๋๋ ๋๊น์ง ๋ค๋ฅธ ์ฝ๋๋ค์ ์คํ๋ ๋ค ๋ง์์ผํ๋๋ฐ ....์ด..... ์ง์ฐ ๋ช ๋ น์ด ์ข ์ฐพ์๋ด์ผ๊ฒ ๋ค.
awake์์ ์ฝ๋ฃจํด ๋๋ฆฌ๊ณ ๋ฐ๋ก ๊ฒฐ๊ณผ๊ฐ ํธ์ถํ๋ฉด null์ธ๊ฑด ๋น์ฐํ๊ณ ๋ค๋ฅธ ํด๋์ค๋ ์ฝ๋ฃจํด ๋๋๊ณ ๋์ ํธ์ถํ๋๋ฐ๋ null์ธ์ง๋ถํฐ ์ฒดํฌํด๋ณด๋๊ฒ ์ข์๋ฏ
์ผ๋จ ์ฝ๋ฃจํด ๋ด๋ถ์ listํ ํจ์ ๋ค์ด์๊ณ ์ค์ ์ฝ๋ฃจํด ํจ์ ๋ด์์ ํด๋น list ํธ์ถํด๋ณด๋ฉด ์ ๋์ด. ใ ใ ๊ทผ๋ฐ ์ด๊ฒ ์ฝ๋ฃจํด ์ธ๋ถ๋ก ๋๊ฐ๋ ์๊ฐ๋ถํฐ ๊ฐ์๊ธฐ null๋ก ๋ณํด๋ฒ๋ฆฌ๋๊น ๋ฌธ์ ...
์ธ๋ถ์์ ์ ๊ทผํ ๋ ๋ก๊ทธ ๋จ๊ธฐ๊ณ ๋ด๋ถ์์ ๋ฐ์๋ ๋ก๊ทธ ๋จ๊ฒจ๋ด ํ์ด๋ฐ์์ผ๋ก ์ธ๋ถ๊ฐ ๋จผ์ ๋์์ ์์ง ์ ์์ ์๋ ์์์
๊ทธ๋ฐ๊ฐ ๋ก๊ทธ ์ฌ๊ธฐ์ ๊ธฐ ๋ฐ์๋๊ณ ํ์ธ ์ข ํด๋ด์ผ๊ฒ ๋ค
ํ ์คํธ์ฉ์ผ๋ก static bool ํ๋ ๋ง๋ค์ด์ true ๋๋ฉด _GroupDatas ํธ์ถํด๋ณด๋ฉด ๋ ๋ฏ
์ด์ ์ฐพ์์. ๊ฒฐ๊ตญ ์ ๊ฒ ์ฝ๋ฃจํด์ด๋ผ์ ํต์ ์ฌ๋๊น์ง ์ดํ ๋ช ๋ น์ด๋ค์ ์คํ์ด ์ง์ฐ๋๋๊ฑด ๋ง๋๋ฐ ์ฝ๋ฃจํด ์ด์ธ์ ๋ช ๋ น์ด๋ค์ ๊ทธ๋ฅ ์ฃ๋ค ์คํ๋๋ฒ๋ฆผ. ํต์ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ์ด์ ๋ค๋ฅธ ๊ณณ์์๋ list ํธ์ถํ๋๋ฐ ๋น์ด์์ผ๋ ๊ทธ๋ฅ null ๋ฑ์ด๋ฒ๋ฆฐ๊ฑฐ. ๊ทผ๋ฐ ์ ์ downloadadatas ํจ์์์๋ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ listํ ์ํค๊ณ ์ฐ์ด๋ด๋๊น ์๋ null์ด ์ ๋ด์. ์ด์ ๋ ์์๋๋ฐ ํต์ ๋๋ ๋๊น์ง ๋ชจ๋ ์ฝ๋ ์คํ์ ์ค๋จ์ํจ๋ค? ์ด๊ฑด ์ข ๋ฏธ์น๊ฑฐ ๊ฐ์๋ฐ.... ์ด์ผํ์ง...
์ค๋จ์ํค๋๊ฒ๋ณด๋จ _GroupDatas๊ฐ null์ด๋ฉด ์ผ์ ์๊ฐ๋ค์ ๋ค์ ์์ฒญ ํ๊ณ , ๋ ์์ฒญ ํ์๊ฐ ์ค์ ํ ๊ธฐ์ค์ ๋์ด์ฐ๋๋ฐ๋ null์ด๋ฉด ๋คํธ์ํฌ ์ค๋ฅ ๋ฑ์ด๋ด๋๊ฒ ๋์๋ฏ
์ค ํ๋ฒ ํด๋ณผ๊ฒ ๊ทธ๊ฑฐํ๊ณ ๋ณธ๊ฒ์ ์์ ์ ์ ๋ก๋ฉ์ฌ ๋๊ณ ์ฌ๊ธฐ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ฌ๊น๋ ๊ณ ๋ฏผ ์ค ๊ทธ๋ฌ๋ฉด ๋ก๋ฉ ์ค์ ๋ฐ์ดํฐ ๋ค ๋ฃ์ด๋ํ ๋ ๋ค๋ฅธ ํด๋์ค์์๋ ๋ฌธ์ ์๊ฒ ์ง.
๋ค์ด๋ก๋ ์๋ฃ๋์ ๋ ํ ๋ฒ๋ง ์คํํด๋ ๋๋ ๊ฒ์ action์ด๋ delegate๋ฅผ ์ฌ์ฉํด ๊ตฌํํ๋ฉด ์ข์ต๋๋ค.
์ด ํ ์๊ฒฌ์ ๋๋ ํ ํ - dc App
์กฐ์ธ ๊ณ ๋ง์ต๋๋ค. ๊ฒฐ๊ตญ Game์ฌ์์ ์ด ๊ธฐ๋ฅ์ ์ฐ๋ ค๋ฉด ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ค์ ์คํ๊น์ง ๋ง์์ผํ๋ ๋ฌธ์ ๊ฐ ๋ง์์ ์์ ๋ก๋ฉ์ฌ์ ํ๋ ๋ฃ๊ณ ๊ฑฐ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ค ๋ถ๋ฌ์จ ํ์ Game ์ฌ์ผ๋ก ์ง์ ํ๊ฒ ๋ง๋ค์์ด์. ์ ์๋ํ๋๊ฑฐ๊น์ง ํ์ธํ์ต๋๋ค. ์ด์ ๋ก๋ฉ์ฌ์์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ์์ง ํ์ Game์ฌ์ ์ง์ ํ๋๋ก ๋ง๋ค๋ฉด ๋ ๋ฏ ์ถ๋ค์.
๋ก๋ฉ ์ข๋ค