- 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
![](https://koobas.hobune.stream/wayback/20220612234659im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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