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
来创建它!你应该得到一个警告