阵列超出范围..任何解决方案?

时间:2016-10-20 17:56:06

标签: javascript unity3d

我为我的比赛做了一个骗子。我不知道该怎么办。阵列超出范围..当我运行游戏并在myStrings中键入键码时,它不会停止添加硬币,当我移动时,它突然终止。谢谢。

    private var cheatCode : String[];
      var myStrings : String[] = [ "i", "d", "k", "f", "a" ];
    private var index: int;
    public static var coins : int;
    private var coinsBegin : int;


  function Start() {
     coins = PlayerPrefs.GetInt("Coinss");

     cheatCode = myStrings;
     index=0;
  }

  function Update() {

      if (Input.anyKeyDown) {

       if (Input.GetKeyDown(cheatCode[index])) {

         index++;
       }

      else {
          index = 0;    
      }
   }


      if (index == cheatCode.Length) {

            coins += 100;
            PlayerPrefs.SetInt ("Coinss", coins);
            coinsBegin++;
            PlayerPrefs.GetInt("Coinss");
      }

  }
    function OnGUI () {
           GUI.Label (Rect (20, 20, 200, 40), "score: "      +PlayerPrefs.GetInt("Coinss"));

}
//Error:

This one is the picture of the error

我不知道该怎么做。数组超出范围..当我运行游戏并在myStrings中键入键码时,它突然终止。谢谢。

我不知道该怎么做。数组超出范围..当我运行游戏并在myStrings中键入键码时,它突然终止。谢谢。

1 个答案:

答案 0 :(得分:3)

输入作弊码后,每次调用更新方法时都会应用作弊。如果键入作弊码的另一个字符,则索引会递增并导致数组超出范围。 尝试在接受作弊码时重置索引:

      if (index == cheatCode.Length) {

        coins += 100;
        PlayerPrefs.SetInt ("Coinss", coins);
        coinsBegin++;
        PlayerPrefs.GetInt("Coinss");
        index = 0; //reset index
      }