// Inizializza la navetta public void Init() { _shipData = data.shipData; // Rimuovo tutti gli elementi all'interno del model container // Nel caso avessi già instanziato una navetta precedentemente foreach (Transform t in modelContainer.transform) { Destroy(t.gameObject); } GameObject ship = GameObject.Instantiate(_shipData.shipPrefab, modelContainer.transform); ship.name = _shipData.modelName; // Se la navetta possiede un renderer, procedo alla sostituzione dei colori if (ship.GetComponentInChildren <Renderer> () != null) { // Recupero l'elenco dei materiali della navetta Material[] shipMaterials = ship.GetComponentInChildren <Renderer> ().materials; // Ciclo sui colori all'interno del mio ScriptableObject for (int i = 0; i < _shipData.shipColors.Length; i++) { // Se l'indice del colore che sto considerando è presente nella lista // dei materiali... if (i <= shipMaterials.Length) { // ...assegno il colore shipMaterials [i].color = _shipData.shipColors [i]; } } } _weaponsController = gameObject.GetComponent <WeaponsController> (); if (_weaponsController != null) { _weaponsController.Init(data.weaponsData); } _enginesController = gameObject.GetComponent <EnginesController> (); if (_enginesController != null) { _enginesController.Init(data.enginesData); } }