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
问题在于我正在尝试找到不活动的Obstacle
,它适用于第一个有颜色的对象,但是当我结束所有颜色并再次遍历循环时它会说{{1} 1}}在层次结构中处于活动状态,我不明白,每个Obstacle.gameObj
都处于非活动状态(因为我将它们设置为Obstacle.gameObj
中的非活动状态,因此每个障碍都应该处于非活动状态start()
但是在我激活第一个Obstacle.gameObj之后,下一个似乎不存在,循环“只找到”活动的Obstacle.gameObj
并假设列表中的每个对象现在都处于活动状态,而实际上只有前三个处于活动状态,其余3个处于非活动状态......我不明白为什么...为什么代码不能将剩余的gameObj
视为非活动状态?
gameObj
答案 0 :(得分:0)
所以我最终弄清楚了: 因此,如果我创建一个类似于障碍物的服务器类,我需要做一个SHORE,如果该类有一个像GameObject这样的变量或需要实例化或分配的东西,我会这样做 这就是我最终解决问题的方法:
Obstacle go = new Obstacle
{
gameObj = Instantiate(prefab.gameObj)
};
poolList.Add(go);
所以我们确实创建了一个新的Object Obstacle
,之后我们将它的gameObj变量与Instantiate(prefab.gameObj)相等,这样我们就创建了Obstacle的每个部分。