2017-03-31 6 views
0
GameObject cube = Cube.CreatePrimitive(Cube.CubePivotPoint.UPLEFT); 
cube.GetComponent<Renderer>().material.color = Color.blue; 

私はライン上の例外を取得しています色割り当てる:レンダラをスクリプト内のgameobjectに追加するにはどうすればよいですか?

cube.GetComponent<Renderer>().material.color = Color.blue; 

MissingComponentExceptionを:そこには「レンダラー」は「CubeHolder」ゲームオブジェクトに添付されていないが、スクリプトをしようとしているがそれにアクセスする。 おそらくレンダラーをゲームオブジェクト "CubeHolder"に追加する必要があります。または、スクリプトを使用する前にコンポーネントがアタッチされているかどうかを確認する必要があります。

私はキューブではなく、ユニティのGameObject.CreatePrimitive関数を作成するthis答えからCUBEクラスを使用しています。

答えて

1

私がCUBE classを書きましたが、キューブのレンダラが別のオブジェクトの子になったということを忘れてしまいました。

RendererまたはMeshRendererをキューブに追加する必要はありません。それはすでにそこにある。キューブは単なる子オブジェクトで、親オブジェクトの名前はです.CubeHolderです。 Rendererを取得するには、GetComponentInChildrenを使用する必要があります。

cube.GetComponent<Renderer>().material.color = Color.blue; 

は今、次のようになります。

cube.GetComponentInChildren<Renderer>().material.color = Color.blue; 
+0

あなたは多分またOPはただのゲームオブジェクト、この特定のクラスを使用していないという事実が含まれるように、質問自体を編集してもらえますか? (現時点では多少XY問題があり、MCVEが欠けているため)。 @シャロンジゼルもそうすることができる/そうすべきである。 – Keiwan

+0

これはOPが 'Cube.CreatePrimitive(Cube.CubePivotPoint.UPLEFT);'と言っているからです。その古い答えにリンクするのは良いことですが。私はそれを行います。 – Programmer

関連する問題