2016-12-04 5 views
-2

Ich versuche also, einen Spielautomaten in Unity zu erstellen und erhalte eine Fehlermeldung, dass mein Array-Index außerhalb des Bereichs liegt. Hier ist ein Bild des Fehlers. Wenn jemand mir helfen könnte, es herauszufinden, würde ich es begrüßen.Unity sagt, dass mein Array-Index außerhalb des Bereichs liegt?

#pragma strict 

var id: int = -1; 
var GO: GameObject; 
var mScript: master; // script 

// 0=stopped 1, 2, 3, 4=spinning 5=finished 
var stateWheel: int = 0; 

var angleStart = 0.0; 
var angleStop = 0.0; 
var angT = 0.0; 
var ang = 0.0; 
var r = 0.0; 
var angleRandom = 0.0; 
var countFast: int; 
var index: int = -1; 

var totalFaster = 0.0; 
var totalSlower = 0.0; 


var t = 0.0; 
var td = 0.0; 

function Start(){ 
    GO = GameObject.Find("Master"); 
    mScript = GO.GetComponent (master); 

    stateWheel = 0; 
    angleStart = 0.0; 
    angT = 0.0; 
    t = 0.0; 
} 

function Update() {  
    td = Time.deltaTime; // time since last Update 
    t += td; 

    switch (stateWheel) { 
     case 0: 
      initialize(); 
      return; 
     case 1: 
      rotateFaster(); 
      return; 
     case 2: 
      rotateFast(); 
      return; 
     case 3: 
      rotateSlower(); 
      return; 
     case 4: 
      rotateReverse(); 
      return; 
     case 5: 
      finished(); 
      return; 
    } 
} 

function initialize() { 

if (mScript.stateWheels[id] != 1) return; 
mScript.stateWheels[id] = 0; 

r = mScript.randomNo(); 
angleStop = 18.0*Mathf.RoundToInt(360.0*r/18.0); 
if (angleStop >= 360) angleStop -= 360; 
angleRandom = angleStop - angleStart; 
if (angleRandom < 0) angleRandom += 360; 

ang = 0.0; 
stateWheel++; 
} 

function rotateFaster() { 
    ang += 0.02; 
    if (ang > 10) { 
     var angleAdjust = (360 - 335) + (360 - 135); 

     var a = angleAdjust + angleRandom; 
     if (a >= 360) a -= 360; 
     countFast = Mathf.RoundToInt(a/10) + 1; 
     stateWheel++; 
     return; 
    } 

    totalFaster += ang; 
    if (totalFaster >= 360) totalFaster -= 360; 
    angT += ang; 
    if (angT >= 360) angT -= 360; 
    transform.rotation = Quaternion.Euler(-angT, 0.0, 0.0); 
} 

function rotateFast() { 
    countFast--; 
    if (countFast == 0) stateWheel++; 

    ang = 10; 
    angT += ang; 
    if (angT >= 360) angT -= 360; 
transform.rotation = Quaternion.Euler(-angT, 0.0, 0.0); 

}

function rotateSlower() { 
    ang -= 0.1; 
    if (ang < 0) { 
     stateWheel++; 
     return; 
    } 

    totalSlower += ang; 
    if (totalSlower>= 360) totalSlower -= 360; 
    angT += ang; 
    if (angT >= 360) angT -= 360; 
    transform.rotation = Quaternion.Euler(-angT, 0.0, 0.0); 
    } 

    function rotateReverse() { 
    angT -= 0.4; 
    if (angT < angleStop) { 
      angT = Mathf.RoundToInt(angT); 
      stateWheel++; 
    } 
    transform.rotation = Quaternion.Euler(-angT, 0.0, 0.0); 
    } 

    function finished() { 

     index = Mathf.RoundToInt(angT/18); 
     if (index == 0) index += 20; 
     angleStart = angT; 
     stateWheel = 0; 
    } 
+0

Zu viel Code, wo genau zeigt dieser Fehler? – Baruch

+1

'id' ist definiert als' -1', also was erwarten Sie mit 'mScript.stateWheels [id]'? – UnholySheep

+1

oben und 'var index: int = -1;' –

Antwort

0

Wie viele gesagt in den Kommentaren, das Problem ist klar, weil Sie id--1 in Zeile var id: int = -1; gesetzt: ein Array Startindex ist 0.

Wenn Sie versuchen, ein Element eines Arrays abzurufen, das nicht existiert (Array ist null, Index < 0 oder index> = Länge des Arrays), erhalten Sie diesen Fehler.

Verwandte Themen