示例#1
0
    /// <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]);
    }