Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#/Unity实例化类,创建具有相同实例ID 0的副本_C#_Class_Unity3d_Nullreferenceexception_Instantiation - Fatal编程技术网

C#/Unity实例化类,创建具有相同实例ID 0的副本

C#/Unity实例化类,创建具有相同实例ID 0的副本,c#,class,unity3d,nullreferenceexception,instantiation,C#,Class,Unity3d,Nullreferenceexception,Instantiation,下面的函数应该创建SolarSystem\u Manager的新实例并将其添加到列表中,但是当运行var clone=Instantiate(\u solar)时,它返回一个nullreference错误。当我创建多个时,\u solar的所有实例都具有相同的ID,这是0,更改一个实例的变量也会更改其他实例的变量。你知道我做错了什么吗 private void createSolarSystem() { SolarSystem_Manager _sol

下面的函数应该创建
SolarSystem\u Manager
的新实例并将其添加到列表中,但是当运行
var clone=Instantiate(\u solar)
时,它返回一个
nullreference
错误。当我创建多个时,
\u solar
的所有实例都具有相同的ID,这是0,更改一个实例的变量也会更改其他实例的变量。你知道我做错了什么吗

private void createSolarSystem()
         {
             SolarSystem_Manager _solar = new SolarSystem_Manager();
             _solar.solarSystem = new SolarSystem(transform.GetComponent<Galaxy>(), Random.Range(9, 10), new List<LQPlanetManager>(), new SunManager());
             var clone = Instantiate(_solar);
             solarSystems.Add(clone);
         }
private void createSolarSystem()
{
SolarSystem_Manager_solar=新的SolarSystem_Manager();
_solar.solarSystem=新的solarSystem(transform.GetComponent(),Random.Range(9,10),new List(),new SunManager());
var clone=实例化(_solar);
solarSystems.Add(克隆);
}

您不应该用
new
关键字实例化Unity对象。您更应该在编辑器中预制SolarSystem_Manager,并将其存储在某个变量中:

  • 将此添加到您的类:

    [SerializeField]私有游戏对象\u solarSystemManagerPrefab

  • 在编辑器内部,创建一个预置并将其拖放到
    \u solarSystemManagerPrefab

  • 现在,您可以像下面这样实例化预置:

    gameobjectclone=实例化(\u solarSystemManagerPrefab)


  • 请提供更多有关其他课程的详细信息。太阳系管理器是一个单元引擎对象吗?实例化仅适用于UnityEngine.Object类型。就在所有“副本”中更改变量而言,这些副本必须使用相同的ref实例来存储数据。但是,如果
    SolarSystem\u Manager
    UnityEngine.Object
    (我猜是
    MonoBehavior
    )类型,则不能使用
    new
    来创建它!你应该得到一个警告