static GameObject ToSceneGameObject(string s)
    {
        string[] tokens     = s.Split(DELIMETER_C);
        int      levelIndex = int.Parse(tokens[0]);
        string   name       = tokens[1];

        LevelManagerComponent.Level owningLevel = (LevelManagerComponent.Level)(levelIndex);

        if (!LevelManagerComponent.LevelCurrentlyLoaded(owningLevel))
        {
            return(null);
        }

        GameObject[] allGameObjects = Object.FindObjectsOfType <GameObject>();
        for (int i = 0; i < allGameObjects.Length; ++i)
        {
            if (allGameObjects[i].name == name && allGameObjects[i].scene.buildIndex == levelIndex)
            {
                return(allGameObjects[i]);
            }
        }

        Logger.Error("Error deserializing Scene Gameobject '" + name + "' (Level " + levelIndex + ") in ToSceneGameObject.");
        return(null);
    }
示例#2
0
    //##############################################################################################
    // On enter, find the level manager component in our parent hierarchy, then notify it that the
    // primary level should change to this one.
    //##############################################################################################
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
            LevelManagerComponent manager = GetComponentInParent <LevelManagerComponent>();

            if (!manager)
            {
                Logger.Error("LevelTriggerComponent " + name + " not parented under LevelManagerComponent correctly");
                return;
            }

            manager.SetPrimaryLevel(primaryLevel);
        }
    }
    //##############################################################################################
    // Setup the various queues, and error check the level loads entries. They should be ordered
    // in the same order as their build index.
    //##############################################################################################
    void Start()
    {
        instance = this;

        saveLoadQueued = 0;

        loadQueue   = new Queue <Level>();
        unloadQueue = new Queue <Level>();

        levelIsLoaded    = new bool[levelLoads.Length];
        levelIsLoaded[0] = true; // Since we're in global

        for (int i = 0; i < levelLoads.Length; ++i)
        {
            if (levelLoads[i].selfLevelLabel != (Level)(i))
            {
                Logger.Error("Level load at index " + i + " is out of order. Is " + levelLoads[i].selfLevelLabel + ", but should be " + (Level)(i));
            }
        }
    }