Я пытаюсь создать несколько объектов под названием Звезды. В моем классе Simulation у меня есть метод, в котором я создаю объект с именем newStar и присоединяю класс Star.
Вот моя иерархия GameObject:
Скрипт Simulation, имеющий класс Simulation, присоединен к игровому объекту Simulation. Скрипт Star с классом Star присоединяется к игровому объекту StarObject. В скрипте Star я прикрепил префаб звезды к prefabStar, а игровой объект StarObject был прикреплен к переменной StarObject через редактор Unity.
Вот мой класс Simulation: (ObjectStar - GameObject который является родителем prefabStar.
void listStars()
{
int i = 0;
while (i < (StarDataBank.Instance.NumOfStars))
{
int primaryID = int.Parse(StarDataBank.Instance.StarIDID[i]);
string properName = StarDataBank.Instance.StarName[i];
string HIPID = StarDataBank.Instance.StarIDHIP[i];
string HDID = StarDataBank.Instance.StarIDHD[i];
string HRID = StarDataBank.Instance.StarIDHR[i];
string GLID = StarDataBank.Instance.StarIDGL[i];
string BFID = StarDataBank.Instance.StarIDBF[i];
decimal rightAscension = Convert.ToDecimal(StarDataBank.Instance.StarRA[i]);
decimal declination = Convert.ToDecimal(StarDataBank.Instance.StarDec[i]);
decimal Mag = Convert.ToDecimal(StarDataBank.Instance.StarMag[i]);
decimal CI = Convert.ToDecimal(StarDataBank.Instance.StarCI[i]);
int scale = 0;
int r = 0;
int g = 0;
int b = 0;
Star newStar = ObjectStar.AddComponent<Star>();
newStar.Instantiate(primaryID, properName, HIPID, HDID, HRID, GLID, BFID, rightAscension, declination, Mag, CI);
i++;
}
}
Вот класс Star:
public void Instantiate(int primaryID, string properName, string HIPID, string HDID, string HRID, string GLID, string BFID, decimal rightAscension, decimal declination, decimal magnitude, decimal colourIndex)
{
this.primaryID = primaryID;
this.properName = properName;
this.HIPID = HIPID;
this.HDID = HDID;
this.HRID = HRID;
this.GLID = GLID;
this.BFID = BFID;
this.rightAscension = rightAscension;
this.declination = declination;
this.magnitude = magnitude;
this.colourIndex = colourIndex;
var newStar = Instantiate(prefabStar, transform.position + getVector(Convert.ToDecimal(rightAscension), Convert.ToDecimal(declination)), Quaternion.identity);
newStar.name = (primaryID).ToString();
newStar.transform.parent = StarObject.transform;
newStar.transform.localScale = new Vector3(20, 20, 20);
}
Мое желаемое намерение состоит в том, чтобы создать клон prefabStar с каждым клоном, прикрепленным к Звездный класс, так что я могу получить переменные каждого клона prefabStar.
Вместо этого я получаю сообщение об ошибке «Объект, экземпляр которого вы хотите создать, равен нулю». новые игровые объекты (prefabStar не клонируется.)
РЕДАКТИРОВАТЬ: я добавил скриншот Graf префаба в редакторе,
Обратите внимание, как к нему прикреплен класс Star. prefab. (Пожалуйста, не обращайте внимания на имя Star Manager, я проводил несколько тестов, проблема все еще сохраняется с именем Star)