質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

1回答

2003閲覧

配列にしたコンポーネントの操作

susudada

総合スコア10

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2015/12/12 15:08

初心者です。
配列に格納したコンポーネントを操作できなくて困っています。

lang

1 2//コンポーネントをつけるオブジェクトを宣言。 3private var obj0 : GameObject; 4private var obj1 : GameObject; 5private var obj2 : GameObject; 6 7//コンポーネントを宣言。 8private var line0 : LineRenderer; 9private var line1 : LineRenderer; 10private var line2 : LineRenderer; 11 12//コンポーネントを配列に。 13private var lines =new Array(line0,line1,line2); 14//Builtin配列で型(?)を定めるため、宣言。 15private var Bltlines : LineRenderer[]; 16 17function Start () { 18 19 //コンポーネントをつける。そして(一応)初期値を入れておく。 20 line0 = obj0.AddComponent(LineRenderer); 21 line0.SetVertexCount(0); 22 line0.SetWidth(0.02, 0.02); 23 line1 = obj1.AddComponent(LineRenderer); 24 line1.SetVertexCount(0); 25 line1.SetWidth(0.02, 0.02); 26 line2 = obj2.AddComponent(LineRenderer); 27 line2.SetVertexCount(0); 28 line2.SetWidth(0.02, 0.02); 29 30 //Builtin配列にし、中身が全てLineRendererであることを示す。 31 Bltlines = lines.ToBuiltin(LineRenderer) as LineRenderer[]; 32

とあったとします。
その後配列の番号で(例えばBltlines[1])呼び出して操作ができません。

lang

1function Update () { 2 Bltlines[1].SetVertexCount(2); 3 Bltlines[1].SetPosition(0, Vector3(1,0,0)); 4 Bltlines[1].SetPosition(1, Vector3(2,0,0)); 5

と書いたら、(1,0,0)から(2,0,0)までラインを描いてくれると思うのですが、出ません。
解決方法があればお願いしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

//コンポーネントを配列に。

private var lines =new Array(line0,line1,line2);

ここに問題があります。
宣言時に各lineは設定されていないため、各lineを設定してからlinesを生成すれば動くようになると思います。

JavaScript

1function Start () 2{ 3 //コンポーネントをつける。そして(一応)初期値を入れておく。 4 line0 = obj0.AddComponent(LineRenderer); 5 line0.SetVertexCount(0); 6 line0.SetWidth(0.02, 0.02); 7 line1 = obj1.AddComponent(LineRenderer); 8 line1.SetVertexCount(0); 9 line1.SetWidth(0.02, 0.02); 10 line2 = obj2.AddComponent(LineRenderer); 11 line2.SetVertexCount(0); 12 line2.SetWidth(0.02, 0.02); 13 14 //Builtin配列にし、中身が全てLineRendererであることを示す。 15 lines = new Array(line0,line1,line2); 16 Bltlines = lines.ToBuiltin(LineRenderer) as LineRenderer[]; 17}

もしくはBltlinesをpublic宣言にして、Unityエディタ上で設定する方法も考えられます。

投稿2016/06/11 22:01

urahimono

総合スコア714

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問