Example #1
0
    // 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);
        }
    }