๋‚ด ๋ฏธ์ฒœํ•œ ์ฝ”๋”ฉ์‹ค๋ ฅ์ด ๋„ˆ๋ฌด ๋ถ€๋„๋Ÿฌ์›Œ์„œ ์•ˆ์˜ฌ๋ฆด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ด๊ฒƒ๋งŒ 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&)


๋ฆฌ์ŠคํŠธ๊ฐ€ ๋นˆ๊ฑด ์•„๋‹ˆ์•ผ ๋ช‡๋ฒˆ์„ ๋‹ค์‹œ ํ™•์ธ๋„ ํ•ด๋ด„ย ๊ทผ๋ฐ ๋ญ๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ๋ž‘ ๊ผฌ์ธ๊ฒƒ๋„ ์•„๋‹๊ฑฐ์ž„ย ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฑด๋“œ๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„์ง์€ ์—†์Œ ๋ญ๊ฐ€ ๋ฌธ์ œ์ผ๊นŒ?