如何正确初始化循环生成的对象数组

时间:2019-07-19 13:44:33

标签: c# unity3d

我是C#编码的新手,并且此代码存在一些问题。大多数代码都可以正常工作,但是当我测试以查看对象数组中的随机对象是否可以给我一定的值时,会出现以下错误:

  

NullReferenceException:对象引用未设置为对象的实例

     

UniGen.Start()(位于Assets / UniGen.cs:23)

正如我所说的,我是C#的新手,这可能是一个新手错误,或者我只是不了解对象数组或它们的用法。我将此代码用作Unity中的C#脚本。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UniGen : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        int Universe = Random.Range(600, 801);
        int planetHab, planetSize, numOfPlanets;
        Planets[] UniversalArray = new Planets[800];
        for (int i=0;i<Universe;i++)
        {
            planetHab = Random.Range(1, 26);
            planetSize = Random.Range(1, 11);
            UniversalArray[i] = new Planets(planetHab,planetSize,i);
        }
        for (int i=0;i<UniversalArray.Length;i++)
        {
            Debug.Log("Habitability: "+UniversalArray[i].Hab + "| Size: " + UniversalArray[i].Size + "| ID Number: " + UniversalArray[i].ID);
        }

        // This part doesn't get printed out

        Debug.Log(UniversalArray[46].Size);
    }

    // Update is called once per frame
    void Update()
    {
    }
}

代码本身可以正常工作,并且需要打印的所有内容都可以打印出来,但是Debug.Log(UniversalArray [46] .Size)行;没有打印。我希望它将为我提供数组第46个对象中的Size值。

0 个答案:

没有答案