Не могу найти компонент после создания - PullRequest
1 голос
/ 26 февраля 2020

Приведенный ниже код выдает мне ошибку, потому что в prefab не найдена запись, GetComponent возвращает ноль. Но после запуска этого метода игровой объект все равно появляется в иерархии, и я вижу, что на нем есть сценарий записи. Он прикреплен к root игровому объекту сборного дома. У него нет детей.

    // SETUP CLASS

       private void LoadTracksAndSpawnRecords()
        {
            var tracks = TrackAndRecordLoading.Load ( PathToAudio, SettingsFile, () => gameObject.AddComponent<Track> () );
            var records = TrackAndRecordLoading.GetRecordPrefabs ( tracks );
            trackManager = new TrackManager ( tracks );
        }

// LOADER CLASS

        public static List<GameObject> GetRecordPrefabs( List<Track> tracks )
        {
            var recordPrefabs = new List<GameObject> ();
            foreach ( var track in tracks )
            {

                // This returns the correct prefab
                var prefab = SpawnPrefab.Instance.Spawn ( Prefabs.DynamicRecord );

              // This is null. Even though the inspector shortly after this line shows
              // the GO in hierarchy and it has Record script
              var record = prefab.GetComponent<Record> ();

                record.track = track;
                recordPrefabs.Add ( prefab );
            }
            return recordPrefabs;
        }


// INSTANTIATE
      public GameObject Spawn( string PrefabName )
        {
            // This returns the correct prefab
            var prefab = Resources.Load<GameObject> ( Prefabs.PathToPrefabsFolder + PrefabName );

           // This returns an clone. When visible in inspectors it has the "(Clone)" added // to its name
           return GameObject.Instantiate ( prefab, new Vector3 ( 0, 0, 0 ), Quaternion.identity );
        }

1 Ответ

0 голосов
/ 26 февраля 2020

У меня было два класса под названием Запись, и это было проблемой. Процесс санации правильный.

...