I can’t figure it out. Sometimes itt crashes, sometimes it doesn’t. It doesn’t seem to relate to how many WordDisplays I have active, how the rate at which I spawn them, etc. I don’t get any error messages on account of Unity freezing, so I can’t figure it out.
{
private static string[] wordArray = {"floor","treaty","giant","lifestyle","reasonable","stream","shelf","medal","register","cereal","stage",
"command","please", "separate",
"intervention","rung","hover","fountain","cotton","attention","adoption",
"leftovers","publish","inn","moment","eagle","mastermind", "sector","clinic", "trend", "jockey", "vegetable", "category", "upset", "rebel","progressive",
"manner", "reporter", "zebra", "waterway",
"wetworks", "window", "welfare", "all-star", "allegory", "beetle", "pungeant", "pageant", "peacock", "rubbish", "kerfuffle"};
public static List<string> wordList = new List<string>();
public static List<char> activeCharList = new List<char>();
static WordDisplay[] wordDisplays;
void Awake()
{
foreach (string word in wordArray)
{
wordList.Add(word);
}
}
private void Update()
{
print(wordList.Count);
}
public static string GetRandomWord()
{
if (wordList.Count <= 3)
{
foreach (string word in wordArray)
{
wordList.Add(word);
}
}
wordDisplays = FindObjectsOfType<WordDisplay>(); //get all active word displays
foreach (WordDisplay wordDisplay in wordDisplays) //then get all first characters of those wordsdisplays
{
activeCharList.Add(wordDisplay.textMeshPro.text[0]);
}
int randomIndex = Random.Range(0, wordList.Count);
string randomWord = wordList[randomIndex];
while (activeCharList.Contains(randomWord[0]))
{
randomIndex = Random.Range(0, wordList.Count);
randomWord = wordList[randomIndex];
}
wordList.Remove(randomWord);
return randomWord;
}
}