/// <summary> /// Returns a random arena prefab that has NOT been used in this set yet. /// </summary> /// <returns></returns> private LevelArenaController GetAppropriateRandomArenaPrefab() { // load all arena prefab object for current arena set GameObject[] loadedArenaPrefabObjs = AssetRefMethods. LoadAllBundleAssetLevelArenaPrefab(arenaSetData.setNum); // if already used all of the arenas that were loaded if (usedArenaIdsInSet.Count > loadedArenaPrefabObjs.Length) { // print warning to console Debug.LogWarning("No arenas that haven't already been used!"); // return some default value return(null); } // initialize list of arena prefabs that have not been used yet as empty list List <LevelArenaController> potentialArenaPrefab = new List <LevelArenaController>(); // loop through all loaded arena objects foreach (GameObject iterObj in loadedArenaPrefabObjs) { // if iterating arena object has NOT been used in this set yet if (!usedArenaIdsInSet.Contains(GetArenaIdFromObject(iterObj))) { // add the iterating object's arena component to list of potentials potentialArenaPrefab.Add(iterObj.GetComponent <LevelArenaController>()); } } // get a random index in potentials list int randomPrefabListIndex = Random.Range(0, potentialArenaPrefab.Count); // return a random arena prefab by using the random index return(potentialArenaPrefab[randomPrefabListIndex]); }