リスト内にリストを追加しようとしています。しかし、私はサブリストからアイテムを取得することができませんでした。エラーはありませんが、サブリストからデータが取得されませんでした。注目してくださいGenerateClue()
私はエラーがあると思います。サブリスト項目がC#で表示されない
私はclueList[0][0]
を使用してデータにアクセスしようとしているときに、何のデータ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.UI;
public class TrainingMode : MonoBehaviour {
private List<int> answerKey;
private List<int> clue;
private List<List<int>> clueList;
private int correct;
private int wellPlaced;
public Text answerKeyText;
System.Random random = new System.Random();
void Start() {
answerKey = new List<int>();
clue = new List<int>();
clueList = new List<List<int>>();
GenerateAnswerKey();
GenerateClue();
//CheckCorrectAndWellPlaced();
answerKeyText.GetComponent<Text>().text = answerKey[0] + " "+ answerKey[1] + " "+ answerKey[2];
foreach (List<int> arrClue in clueList)
{
foreach (int item in arrClue)
{
Debug.Log(item);
}
}
}
private void GenerateClue()
{
//Generate clue
for (int j = 0; j <= 5; j++)
{
for (int i = 0; i <= 2; i++)
{
int randomNumber = random.Next(0, 9);
if (clue.Contains(randomNumber))
{
i--;
}
else
{
clue.Add(randomNumber);
}
if (clue.Count == 3)
{
clueList.Add(clue);
clue.Clear();
}
}
}
}
private void CheckCorrectAndWellPlaced()
{
correct = 0;
wellPlaced = 0;
//Check for correct and wellplaced numbers
for (int i = 0; i <= 2; i++)
{
if (answerKey.Contains(clue[i]))
{
correct++;
}
if (clue[i] == answerKey[i])
{
wellPlaced++;
}
}
}
private void GenerateAnswerKey() {
//Generate answerkey
for (int i = 0; i <= 2; i++)
{
int randomNumber = random.Next(0, 9);
if (answerKey.Contains(randomNumber))
{
i--;
}
else
{
answerKey.Add(randomNumber);
}
}
}
}
問題はここにある "; clue.Clear(); clueList.Add(手掛かり)" - リストに追加すると、オブジェクトのコピーが作成されず、オブジェクトへの参照が追加されます。 – PaulF
以下のコメントをフォローアップする - GenerateClue()メソッドの無限ループに乱れている可能性があります。もし乱数がカウンタiで終わる可能性のある値を繰り返すならば、私は2に達しません。ループをwhileループからwhileループに変更する - while(clue.Count <3) " – PaulF