2015-10-06 3 views
1

У меня есть проблема в коде ниже:массив выходит из индекса

var Directions : Vector3[]; //* 
function FindNext(){ 

if(Set.length == 0){ 
    Debug.Log("We're done."); 
    return; 
} 

var previous : Transform = Set[0]; 
var pScript : Cell = previous.GetComponent("Cell"); 

var next : Transform; 
var nextScript : Cell; 

var prevX : int = pScript.Position.x; 
var prevZ : int = pScript.Position.z; 

var randDirection : Vector3; 
var randSeed : int = Random.Range(0,4); 

var nextX : int; 
var nextZ : int; 
var counter : int; 

do{ 
    do{ 
     randDirection = Directions[randSeed]; 
     nextX = prevX+randDirection.x; 
     nextZ = prevZ+randDirection.z; 
     randSeed = (randSeed+1) % 4; 
     counter++; 
     if(counter > 4){ 
      Set.RemoveAt(0); 
      previous.GetComponent.<Renderer>().material.color = Color.black; 
      yield WaitForEndOfFrame(); 
      return; 
     } 
    }while(nextX < 0 || nextZ < 0 || nextX + 1 >= GridSize.x || nextZ + 1 >= GridSize.z); 
    next = GridArr[nextX,nextZ]; 
    nextScript = next.GetComponent("Cell"); 
    //nextScript.IsOpened = false; 
}while(nextScript.IsOpened); 


AddToSet(next); 

DrawDebugLines(10, previous, next); 

ClearWalls(previous, next); 

yield WaitForEndOfFrame(); 
} 

По какой-то причине возникла проблема с индексом массива, и я не знаю, что это такое.

Ниже ошибка, что я получаю:

IndexOutOfRangeException: Array index is out of range. 
Grid+$FindNext$5+$.MoveNext() (at Assets/Scripts/Grid.js:74) 
UnityEngine.MonoBehaviour:StartCoroutine_Auto(IEnumerator) 
Grid:Update() (at Assets/Scripts/Grid.js:122) 

Я использую UnityScript с Unity 5.

+0

Проблема решена с внешней переменной внутри сцены. только Set Set Array в (0,1) (1,0) (1,1) (0,0) –

+0

Пожалуйста, подумайте над ответом на свой собственный вопрос, поскольку это может помочь другим людям, приезжающим;) – Minzkraut

ответ

0

Ну решение было простым, как эта программа работает на Unity, массив, который был Вне диапазона это публичный массив с трансформациями, так чтобы решить эту проблему, единственное, что нужно сделать, это установить значения массива:

(0,1)(1,0)(1,1)(1,0) 

Эти значения являются потому, что массив должен кон в четырех лабиринтах есть четыре возможных направления.

 Смежные вопросы

  • Нет связанных вопросов^_^