Я пытался изучить Unity 3D, создав простой раннер. Игра порождала простую дорогу из магазина активов. Я решил добавить несколько препятствий к этой дороге и сделать из нее префаб, но когда я добавил этот префаб в массив, из которого Unity берет префабы для их создания и запускает игру, префабы не были созданы. Вот мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TileManager : MonoBehaviour
{
public GameObject[] amountOfPrefabs;
private Transform playerTransform;
private float spawnZ = 0.0f;
private float tileLength = 30.0f;
private int amnTileOnScreen = 7;
// Use this for initialization
void Start()
{
playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
for (int i = 0; i < amnTileOnScreen; i++)
{
SpawnTile();
}
}
// Update is called once per frame
void Update()
{
if (playerTransform.position.z > (spawnZ - amnTileOnScreen * tileLength))
{
SpawnTile();
}
}
private void SpawnTile(int prefabIndex = -1)
{
GameObject go;
go = Instantiate(amountOfPrefabs[0]) as GameObject;
go.transform.SetParent(transform);
go.transform.position = Vector3.forward * spawnZ;
spawnZ += tileLength;
}
}
Помогите, пожалуйста.
SpawnTile
? Добавьте к нему выражениеDebug.Log
. Помимо этого, есть несколько вещей, которые вы не должны делать так, как вы это делали (например, вы создадите много объектов, и вы не должны родительские объекты, потому что каждый вновь добавленный дочерний элемент приведет к обновлению / повторению всего контейнера. в текущих версиях единства). Дополнительное ключевое слово здесь: объединение объектов. - person Gunnar B.   schedule 24.07.2018