2016-08-27 9 views
0

コンポーネント(マテリアル)をいくつかのキューブに追加しようとしています。 私はキューブの配列を持っていて、それらは描かれなければなりません。コンポーネント(マテリアル)を1つのキューブに追加するC#

MissingComponentException:そこには「素材」が 「キューブ」ゲームオブジェクトに添付されていないが、スクリプトは

マイそれにアクセスしようとしているが最初のキューブた後、Unityは言うエラーがスローされますコード:

using UnityEngine; 
using System.Collections; 
using UnityEngine.SceneManagement; 
using UnityEngine.UI; 

public class GameScene : MonoBehaviour { 

SceneManager Changer; 
public Scrollbar speed, size; 
GameObject[,] cubes; 
int sizer;  
Color mixer; 

// Use this for initialization 
void Start() { 
    size.value = PlayerPrefs.GetFloat("sizeSecond"); 
    speed.value = PlayerPrefs.GetFloat("speed"); 

    SetSize(); 

    cubes = new GameObject[sizer, sizer]; 

    GenerateCubes(); 

    mixer = new Color(PlayerPrefs.GetFloat("red"), PlayerPrefs.GetFloat("green"), PlayerPrefs.GetFloat("blue")); 


} 

// Update is called once per frame 
void Update() { 

} 

public void GoBack() { 
    SceneManager.LoadScene(2); 
    PlayerPrefs.SetInt("chosenScene", 1); //key setzen 
    PlayerPrefs.SetFloat("speed", speed.value); 
    PlayerPrefs.SetFloat("sizeSecond", size.value); 
} 

void SetSize() { 
    if (PlayerPrefs.GetInt("size") == 0) 
    { 
     sizer = 20; 
    } 
    else if (PlayerPrefs.GetInt("size") == 1) 
    { 
     sizer = 40; 
    } 
    else if (PlayerPrefs.GetInt("size") == 2) 
    { 
     sizer = 60; 
    } 
} 

void GenerateCubes() { 
    for (int i = 0; i < sizer; i++) 
    { 
     for (int j = 0; j < sizer; j++) 
     { 

      cubes[i, j] = GameObject.CreatePrimitive(PrimitiveType.Cube); //erzeugen 
      cubes[i, j].transform.position = new Vector3(i -sizer/2, j - sizer/2, 0); // durch 2 damit es mittig angezeigt wird. 
      cubes[i, j].GetComponent<Material>().color = mixer; 

      Instantiate(cubes[i, j]);        
     } 
    } 
} 
} 

サイザーはキューブの量を取得します。

答えて

0

あなたはGameObject.CreatePrimitive(PrimitiveType.Cube);とキューブを生成するとき、キューブがそれにないMaterialを添付Mesh Rendererで作成されます。

enter image description here

あなたはMesh RendererコンポーネントからキューブのMaterialにアクセスすることができます。

単に私の神ああ、そうダムイム

cubes[i, j].GetComponent<MeshRenderer>().material.color = mixer; 
+0

cubes[i, j].GetComponent<Material>().color = mixer; 

を交換してください。ご協力ありがとうございます!!!! – louis12356

+0

@ louis12356新しいUnityユーザにとってはちょっとした間違いです。答えを受け入れることを忘れないでください。 – Programmer

+0

私はそれを受け入れました - ありがとう再び:-) – louis12356

関連する問題