当GameObject在层次结构中不活动时,它被赋予活动状态

时间:2018-01-25 11:07:31

标签: c# list unity3d

所以我构建了一个名为Obstacles

的自定义类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class Obstacle{

    public GameObject gameObj;
    public Color color;

    public GameObject[] particleEffects;

    public static Vector3 SpawnLocation()
    {
        int positionQuadran = Random.Range(1, 3);
        switch (positionQuadran)
        {
            //spawn above the player
            case 1:
                 return new Vector3(Random.Range(1.5f, -1.5f),
                                                      Random.Range(4f - SpawnStars.closerToPlayer, 4.5f),
                                                      Random.Range(1, -3.2f));
            //spawn benith the player
            case 2:
                return new Vector3(Random.Range(1.5f, -1.5f),
                                                      Random.Range(-0.5f, SpawnStars.closerToPlayer),
                                                      Random.Range(1f, -3.2f));
        }
        return Vector3.zero;
    }
}

接下来,我创建了一个包含6个对象的池,每两个对象具有相同的颜色,因此obstaclePool

中有3种不同的颜色

问题在于我正在尝试找到不活动的Obstacle,它适用于第一个有颜色的对象,但是当我结束所有颜色并再次遍历循环时它会说{{1} 1}}在层次结构中处于活动状态,我不明白,每个Obstacle.gameObj都处于非活动状态(因为我将它们设置为Obstacle.gameObj中的非活动状态,因此每个障碍都应该处于非活动状态start()但是在我激活第一个Obstacle.gameObj之后,下一个似乎不存在,循环“只找到”活动的Obstacle.gameObj并假设列表中的每个对象现在都处于活动状态,而实际上只有前三个处于活动状态,其余3个处于非活动状态......我不明白为什么...为什么代码不能将剩余的gameObj视为非活动状态?

gameObj

1 个答案:

答案 0 :(得分:0)

所以我最终弄清楚了: 因此,如果我创建一个类似于障碍物的服务器类,我需要做一个SHORE,如果该类有一个像GameObject这样的变量或需要实例化或分配的东西,我会这样做 这就是我最终解决问题的方法:

        Obstacle go = new Obstacle
        {
            gameObj = Instantiate(prefab.gameObj)
        };
        poolList.Add(go);

所以我们确实创建了一个新的Object Obstacle,之后我们将它的gameObj变量与Instantiate(prefab.gameObj)相等,这样我们就创建了Obstacle的每个部分。