- Home /
Why does this script crash Unity?
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;
}
}
Answer by MrFlyingTurtles · May 19, 2020 at 02:17 PM
I figured out the issue: I was never removing the chars from activeCharList, so eventually, the activecharList would have all possible letters and the while loop would never be able to return a value.
Thanks everyone!
Answer by Captain_Pineapple · May 19, 2020 at 07:13 AM
if you ever have a programm freezing you should always take a look at the lastly added while
loops. Especially in your case if you report that it "sometimes" happens and you have a "random" in your loop? I do not really understand what you try to accomplish when only comparing the first letters of your words but you shoudl defnitly find a better solution here that does not contain an endless loop until you perhaps find the correct word.
while loops caused almost every crash ive experienced
Your answer

Follow this Question
Related Questions
Loop fail and unity crash ( eng and spanish ) 1 Answer
Instantiate Loop Crashing 1 Answer
?Can you loop a terrain, to make it never-ending? 3 Answers
Looping an AudioClip var... 1 Answer
Why is my game pausing? 2 Answers