实例化多个预制件

时间:2019-02-09 13:36:59

标签: c# unity3d

我正在做一个球类游戏,所以球经过列,它根据columnPoolSize实例化自己,

我想在这里实例化多个预制件。它仅基于列的大小来激活一个预制件...我需要为columnPrefab GameObject创建另一个数组。但是我尝试这样做,但是没有成功...

public class ColumbPool : MonoBehaviour
{
  public int columnPoolSize = 5;

  public GameObject[] columns;
  public GameObject columnPrefab;
  private Vector2 objectPoolPosition = new Vector2(-15f,-25f);
  private float timeSinceLastSpawn;
  public float spawnRate = 4f;
  public float columnMin = -1f;
  public float columnMax = 3.5f;
  private float spawnXPosition = 10f;
  private int currentColumn = 0;

    void Start()
    {
        columns = new GameObject[columnPoolSize];
        for (int i = 0; i < columnPoolSize; i++)
            {
                columns[i] = (GameObject)Instantiate(columnPrefab, objectPoolPosition, Quaternion.identity);
            }
    }

    void Update()
    {
      timeSinceLastSpawn += Time.deltaTime;
      if (GameController.instance.gameOver==false && timeSinceLastSpawn>=spawnRate)
      {
          timeSinceLastSpawn = 0;
          float spawnYPosition = Random.Range(columnMin, columnMax);
          columns[currentColumn].transform.position = new Vector2(spawnXPosition,spawnYPosition);
          currentColumn++;
          if (currentColumn>=columnPoolSize)
          {
              currentColumn = 0;
          }
      }
   }
}

1 个答案:

答案 0 :(得分:0)

Private Sub DataGridView1_Paint(sender As Object, e As PaintEventArgs) _
    Handles DataGridView1.Paint
    If DataGridView1.Rows.Count = 0 Then
        TextRenderer.DrawText(e.Graphics, "No records found.",
            DataGridView1.Font, DataGridView1.ClientRectangle,
            DataGridView1.ForeColor, DataGridView1.BackgroundColor,
            TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter)
    End If
End Sub

成为

void Start()
    {
        columns = new GameObject[columnPoolSize];
        for (int i = 0; i < columnPoolSize; i++)
            {
                columns[i] = (GameObject)Instantiate(columnPrefab, objectPoolPosition, Quaternion.identity);
            }
    }

这样,您将实例化预制列数组(在检查器中填充)中的每个预制并将引用保存到新数组“ instantiatedColumns”中,然后可以在Update()中使用该数组