๋ด ๋ฏธ์ฒํ ์ฝ๋ฉ์ค๋ ฅ์ด ๋๋ฌด ๋ถ๋๋ฌ์์ ์์ฌ๋ฆด๋ ค๊ณ ํ๋๋ฐ ์ด๊ฒ๋ง 2์๊ฐ ๊ฐ๊น์ด ๋ถ์ก๊ณ ์๋ค๊ฐ ์ด๋ฐ์์ ๊ทธ๋ฅ ๋ฌผ์ด๋ด
์ํ ๊ฒ์์์ ๋ณด์ค๊ฐ ๋ฐ๋ฅ์ ์ฅํ์ ๊น๊ณ 3๊ตฐ๋ฐ๋ง ์์ ํ ์ฅ์๋ฅผ ๋ง๋๋ ์คํฌ๋ฆฝํธ ์ง๋๋ฐ ๋ฐ์ ์จ์๋๋ฐ์ ์๊พธ ๋๊น
public class FloorPattern : MonoBehaviour
{
ย ย public List<GameObject> FloorObj = new List<GameObject>();
ย ย public List<GameObject> DamagerFloorObj = new List<GameObject>();
ย ย public List<GameObject> SafeZone = new List<GameObject>(3);
ย ย public int[] safeZoneNum = new int[3];
ย ย private int j = 0;
ย ย public float ws = 0;
ย ย private void Start()
ย ย {
ย ย ย ย for (int i = 0; i < 26; i++)
ย ย ย ย {
ย ย ย ย ย ย GameObject _obj = GameObject.Find("hexagon (" + i + ")");
ย ย ย ย ย ย FloorObj.Add(_obj);
ย ย ย ย }
ย ย ย ย //FloorObj.RemoveAll(s => s == null);
ย ย ย ย for (int k = 0; k < 26; k++)
ย ย ย ย {
ย ย ย ย ย ย GameObject _Damobj = GameObject.Find("DamagerHexagon (" + k + ")");
ย ย ย ย ย ย DamagerFloorObj.Add(_Damobj);
ย ย ย ย ย ย DamagerFloorObj[k].SetActive(false);
ย ย ย ย }
ย ย ย ย for (int q = 0; q < 3; q++)
ย ย ย ย {
ย ย ย ย ย ย GameObject _safeobj = GameObject.Find("SafeZone (" + q + ")");
ย ย ย ย ย ย SafeZone.Add(_safeobj);
ย ย ย ย }
ย ย ย ย j = 0;
ย ย }
ย ย void OnEnable()
ย ย {
ย ย ย ย j = 0;
ย ย ย ย SafeZoneSelection();
ย ย ย ย for (int g = 0; g < 26; g++)
ย ย ย ย {
ย ย ย ย ย ย DamagerFloorObj[g].SetActive(false);
ย ย ย ย }
ย ย ย ย Invoke("FloorAttack", ws);
ย ย }
ย ย void SafeZoneSet(int safeNum)
ย ย {
ย ย ย ย SafeZone[j].transform.position = FloorObj[safeNum].transform.position; //์ฌ๊ธฐ์ ์๊พธ ๋๊นย ๋๋ฒ๊ทธ์ ๋ก๊ทธ๋ก ํ์ธํด๋ด
ย ย ย ย j += 1;
ย ย }
ย ย void FloorAttack()
ย ย {
ย ย ย ย for (int i = 0; i < 26; i++)
ย ย ย ย {
ย ย ย ย ย ย if(i!= safeZoneNum[0]&& i != safeZoneNum[1]&& i != safeZoneNum[2])
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย DamagerFloorObj[i].SetActive(true);
ย ย ย ย ย ย }
ย ย ย ย }
ย ย }
ย ย void SafeZoneSelection()
ย ย {
ย ย ย ย Debug.Log("w");
ย ย ย ย for (int u = 0; u < 3; u++)
ย ย ย ย {
ย ย ย ย reRandom:
ย ย ย ย ย ย safeZoneNum[u] = Random.Range(0, 26);
ย ย ย ย ย ย if (u >= 1)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย if (safeZoneNum[u - 1] == safeZoneNum[u])
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย goto reRandom;
ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย ย ย else if (safeZoneNum[u] == 6 || safeZoneNum[u] == 12 || safeZoneNum[u] == 19 || safeZoneNum[u] == 25)
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย goto reRandom;
ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย }
ย ย ย ย ย ย SafeZoneSet(safeZoneNum[u]);
ย ย ย ย }
ย ย }
}ย
์๋ฌ๋ ์ด๋ฌ๊ณ ๋
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
System.Collections.Generic.List`1[T].get_Item (System.Int32 index) (at <d4cde64232cf45659d86aafa597faa77>:0)
FloorPattern.SafeZoneSet (System.Int32 safeNum) (at Assets/Script/FloorPattern.cs:54)
FloorPattern.SafeZoneSelection () (at Assets/Script/FloorPattern.cs:90)
FloorPattern.OnEnable () (at Assets/Script/FloorPattern.cs:39)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)
๋ฆฌ์คํธ๊ฐ ๋น๊ฑด ์๋์ผ ๋ช๋ฒ์ ๋ค์ ํ์ธ๋ ํด๋ดย ๊ทผ๋ฐ ๋ญ๊ฐ ๋ฌธ์ ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ด ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ ๊ผฌ์ธ๊ฒ๋ ์๋๊ฑฐ์ย ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ์ด ์คํฌ๋ฆฝํธ๋ฅผ ๊ฑด๋๋ ์คํฌ๋ฆฝํธ๊ฐ ์์ง์ ์์ ๋ญ๊ฐ ๋ฌธ์ ์ผ๊น?
ํ์ผ๋งต์?? - dc App
์.. ํ์ผ๋งต์ผ๋ก ๋ง๋ค์๋ ์๊ตฌ๋ ๊ทผ๋ฐ ํ์ผ๋งต์ ์๋ ๊ทธ๋ฅ ์ก๊ฐํ ์ค๋ธ์ ํธ 26๊ฐ ๋ฐฐ์นํด์ ๋ง๋ฌใ ใ - dc App
์นดํก๋ฐฉ ์ค์ค? ๊ฐ์ด ์ฝ๋ ๋ด์ค - dc App
์ผ๋จ ๋ฌธ์ ๋ Onenable์ด Start๋ณด๋ค ๋จผ์ ์ผ์ง - dc App
๋ฐ๋ผ์ ๋ฆฌ์คํธ ์ด๊ธฐํ ์ ์ ๋น์ด์๋ ๋ฆฌ์คํธ ํธ์ถํ๊ณ ์์ด์ ์์์ค๋ธ์๊ท๋จผํธ ๋จ๋๊ฑฐ ๊ฐ์ - dc App
๊ฐ์ฅ ๊ฐ๋จํ ํด๊ฒฐ๋ฒ์ start์ ์๋ ๋ชจ๋ ์ฝ๋๋ฅผ Onenable ๋งจ ์๋ก ๋ณด๋ด๋ฉด ํด๊ฒฐ๋ ๋ฏ - dc App
์ด๊ฑฐ๋๋ฌธ์ด๋ค Awake OnEnable Start์์ผ๋ก ํธ์ถ๋ผ์ SafeZoneSet ํธ์ถ๋ ๋ SafeZone์ด๋ FloorObj ๋น์ํ์
๊ทธ๋ผ startํจ์๋ฅผ awakeํจ์๋ก ๋ฐ๊ฟ๋ ๋จ? - dc App
์ง์ ํด๋ด. ๊ทผ๋ฐ ์๋ ๊ฑฐ์. ์ค๋ธ์ ํธ ์ญ์ ์ํ๋ฉด ์ด์จ์ดํฌ๋ ๊ป๋ค์ผ๋๊ฑธ๋ก ์๋๊ฑฐ์ ์๋ง๋ - dc App
์ ๋๋ถ์ ํด๊ฒฐํ์ด! onenable์์ ํ๋ฉด ํ์ฑํ ๋ ๋๋ง๋ค ๋ฆฌ์คํธ ๋ค์ ์ฐพ๋๊ฑฐ ๋ณ๋ก์ผ๊ฑฐ ๊ฐ์์ start์๋ค ๋์๊ฑฐ์๋๋ฐ ๊ทธ๊ฒ ๋ฌธ์ ์๋ค๋.. ์ง์ง ๊ณ ๋ง์ใ ใ !! - dc App
๊ตณ! ์คํฌ๋ฆฝํธ ์จ์คํ๋ก ํธ๋ฆฌ๊ฑฐ ํ๋๊ฑฐ๋ฉด Start๋ ์ด์ฐจํผ ๋ ์คํ๋จ. - dc App
https://docs.unity3d.com/Manual/ExecutionOrder.html
์ด๊ฒ ์ข ์ด๋ ค์ธ ์ ์๋๋ฐ ์ฐธ๊ณ ํ๋ฉด ์ข์๋ฏ. ์ด์ฌํ ๊ฐ๋ฐํ์ - dc App
(์ผ๋จ)๋๋ฒ๊ทธ๋ฅผ ๊ฐ ๋ฆฌ์คํธ ๊ตฌ๋ถํด์ ๋ค์ ๋๋ ค๋ณด์ ์์ ํ๋ SafeZone[j].transform.position ๋ค์ ํ๋
๊ทธ๊ฑฐ ํด๋ดค์ด ์ ๊ฑฐ ์ค์ ๊ธฐ์ ์ผ๋ก ์์ ๋จ๊ณ ๋ค๋ ์๋ ๋๋ฒ๊ทธ๋ก๊ทธ์์ SafeZone[j].transform.position.x๋ฃ์ผ๋ฉด ๊ทธ๊ฒ๋ ์๋ด์ - dc App
์ ์๊ฒ ๋ค ์ง๊ธ๋ณด๋๊น ์ด๊ฑธ OnEnable์ ๋ฃ์ง๋ง๊ณ .. ๋ฐ๋ก ํจ์ ๋ง๋ค์ด์ Start๋ค์์ ์คํ๋๋๋ก ํด.... startํ๊ณ onenable ํ๊ณ ์คํ์๋ฒ์ด ๊ฒน์น ๊ฑฐ๊ฐ์๋ฐ
์๋ ๋ฆ์๋คใ ใ ใ onenable์ ์ ์์ฐ๊ธดํ๋๋ฐ ๊ทธ๊ฑธ ๊ฑด๋๋ ธ์. ํ๋ด์ฉ!
์์ฃ๋ถ์ด ์๋ ค์ฃผ์ฌ ๊ทธ๋๋ ๊ฐ์ด ๊ณ ๋ฏผํด์ค์ ๊ณ ๋ง์! ;) - dc App
//FloorObj.RemoveAll(s => s == null); <-์ด๋ถ๋ถ ํ์คํ๊ฒ ์ฃผ์์ฒ๋ฆฌ๋๊ฑฐ ๋ง์? ์คํํธ์์ FloorObj.Add(_obj) ์ด๊ฑฐ 26๋ฒ ๋๋ฆฌ๊ณ ๋์ FloorObj ๊ฐ์ ๋ช์ธ์ง ํ์ธํ๊ณ ๋๊ธฐ๋๋ถ๋ถ ๋ฐ๋ก ์์์ j๋ safeNum ํ์ธํด๋ด
์ฃผ์์ฒ๋ฆฌ ๋๊ฑฐ ๋ง๊ณ ๊ฐ์ 0~25๊น์ง 26๊ฐ์ ๊ทธ๋ฆฌ๊ณ j๋ 0, safeNum์ ๋๋ค ๊ฐ์ผ๋ก ์ ์์ ์ผ๋ก ๋์ด ์ง์ง ์ด๋ฌ๋ค ์คํธ๋ ์ค๋ก ํ๋ชจ์ค๊ฒ ๋คใ ใ - dc App