public void CreateEnemyObjectsToRoad( RoadPool roadpool, int numberOfEnemies, int enemyType )
{
enemy = new Transform[numberOfEnemies];
enemyIndex = new int[numberOfEnemies];
int arrayedEnemyObject = 0;
int enemyObjectsDistance = 1;
int randomSpawn = Random.Range( 0, 3 );
for( int i = 0; i < road.Length; i++ )
{
int numberOfParents;
Transform parentObject;
if( randomSpawn == 0 )
{
parentObject = road[i].Find("SpawnPoint1");
}
else if( randomSpawn == 1 )
{
parentObject = road[i].Find("SpawnPoint2");
}
else if( randomSpawn == 2 )
{
parentObject = road[i].Find("SpawnPoint3");
}
else
{
parentObject = road[i].Find("SpawnPoint4");
}
numberOfParents = parentObject.childCount;
Debug.Log(parentObject);
Debug.Log(numberOfParents);
for( int j = 0; j < numberOfParents && arrayedEnemyObject < numberOfEnemies; j++ )
{
Transform obj = roadpool.PullEnemyOjbectsFromPool(enemyType);
obj.position = parentObject.GetChild(j).position;
obj.gameObject.SetActive(true);
enemy[j] = obj;
enemyIndex[j] = enemyType;
arrayedEnemyObject++;
}
}
}
我试图将敌人产生到我无限道路的随机点。我用Transform创建了父。它可以工作,但是当我试图计算它不起作用时我必须计算父母,我的numberOfParents变量总是为零。
的debug.log
Road Prefab
答案 0 :(得分:0)
您是否在运行时实例化SpawnPoint1等?如果是这样的话,那就是#Spa; SpawnPoint1(克隆)&#34;。与单独查找名称相比,标签和图层名称更容易。在检查器中转到Tag,并为其指定唯一的标签名称。之后,您可以找到带有标签名称的对象(有积分函数)。查找具有特定标记/图层名称的对象数量应该很容易。只需将孩子标记为&#34; spawnChild&#34;然后执行以下操作:
var childCount : int = GameObject.FindGameObjectsWithTag("spawnChild").Length;
还可以使用Debug.Log来获取每个if / then的数量。理想情况下,您应该使用case语句而不是if / then,但我认为它并不重要。您也可能想要在for循环之外初始化Transform或int变量。
此外,您可能希望在变换上执行childCount而不是GameObject,例如:
parentObject.transform.childCount
或者你可以
parentObject = road[i].Find("SpawnPoint1").transform;
或者你应该GameObject parentObject;
对Transform parentObject;
。然后你可以找到GameObject的转换。