Приведенный ниже код выдает мне ошибку, потому что в 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 );
}