【发布时间】:2021-06-25 22:01:01
【问题描述】:
下面的函数应该创建SolarSystem_Manager 的新实例并将其添加到列表中,但是当var clone = Instantiate(_solar) 运行时,它会返回nullreference 错误。当我创建多个时,_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);
}
【问题讨论】:
-
请提供更多关于您的其他课程的详细信息。太阳能系统管理器是 UnityEngine.Object 吗?实例化仅适用于 UnityEngine.Object 类型。至于更改所有“副本”中的变量更改,这些副本必须使用相同的 ref 实例来存储数据。
-
如果
SolarSystem_Manager是UnityEngine.Object(我猜是MonoBehaviour)类型你不能使用new来创建它!你应该得到一个警告
标签: c# class unity3d nullreferenceexception instantiation