前提・実現したいこと
Unityを用いて、ゲームを作っているのですが、配列の部分でエラーが出てしまい、解決できません。クラスの配列です。
発生している問題・エラーメッセージ
IndexOutOfRangeException: Array index is out of range. Controllsystem.GameSelect (Int32 who) (at Assets/Script/Controllsystem.cs:49) Controllsystem.FixedUpdate () (at Assets/Script/Controllsystem.cs:39)
該当のソースコード
c#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Score;
public class Controllsystem : MonoBehaviour {
public GameObject[] game; int player; public static int turn = 0; public static bool finish = false; public static PointMaster[] PlayerScore = new PointMaster[6];//それぞれのスコアを管理する // Use this for initialization void Awake() { player = Opening.Player(); //player数の取得 Debug.Log("player:" + player); //クラス作成と初期化 for (int i = 0; i < player; i++) { Debug.Log("i:"+ i); PlayerScore[i] = new PointMaster(); PlayerScore[i].ResetAll(); } } // Update is called once per frame void FixedUpdate() { //スコアチェック→50ぴったりで終了 //ターンチェック //ターン%playerで、0の時1人目、1の時2人目… GameSelect(turn % player); } void GameSelect(int who) { //ゲームを開始 game[who].SetActive(true); //終了信号を確認する if (finish == true) { Debug.Log("trueda...kakugohaiika,orehadekiteiru!"); //ゲーム終了 // Debug.Log("1player game finish"); game[who].SetActive(false); //NEXT TURN turn++; Debug.Log(turn + "tarn"); finish = false; } else { //Debug.Log("now playing"); } }
}
//クラスの記述してあるスクリプト
using UnityEngine;
namespace Score
{
public class PointMaster
{
private static int Score; private static int Point; private static int Number; public void ResetAll() { Score = 0; Point = 0; Number = 0; } public int GetScore() { return Score; } public void SetScore() { if (Point == 1) Score += Number; else Score += Point; Debug.Log("score:" + Score); } public void ClearPoint() { Point = 0; } public void KeepPointNumber(int num) { Point += 1; Number = num; } }
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。