[過去ログ] 【3Dゲームエンジン】Unity質問スレッド30 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
769
(2): 2017/08/23(水)12:17 ID:0fyfcMVA(2/4) AAS
>>767
まず1つ1つが何をしているのかよく理解することが大事です

buttons.Length

これは確保された実際の配列の数が格納されています。
配列が1つも確保されていないのなら"0"を返し
仮に25個確保されたのなら"25"を返します。

buttons = GameObject.FindGameObjectsWithTag ("button");

これは
画面右上のタグ部分が"button"になってるGameObjectを全部buttonsという配列に格納するものです。
buttonというタグを付けられたGameObjectが2つ存在していれば2つ配列が新規に作成され
1つも存在していなければ配列は作成されません。
つまりbuttons.Lengthの値は"0"です。

private GameObject[] buttons = new GameObject[25]; //←無意味です
this.buttons = GameObject.FindGameObjectsWithTag ("button"); //ここで実際に存在するbuttonの数だけ自動的に配列が再確保されます

上のコードは下と同じです
private GameObject[] buttons;
buttons = GameObject.FindGameObjectsWithTag ("button");

説明が重複しますが
タグにbuttonが指定されているGameObjectが存在していないのならば配列は確保されず
buttons.Lengthの値は"0"です。

numButtonsの値はプログラムのどこにも使用されておらずこれも無意味で必要ありません(結果に影響していません)
771: 769 2017/08/23(水)12:29 ID:0fyfcMVA(3/4) AAS
>>767
using UnityEngine;

using System.Collections;

public class Nichan_767 : MonoBehaviour {

private GameObject[] buttons = new GameObject[25];
// Use this for initialization
void Start() {
Debug.Log("Length=" + buttons.Length); // ?24と表示される
buttons = GameObject.FindGameObjectsWithTag("button");
Debug.Log("Length=" + buttons.Length); // ?0と表示される
}
}

?の時点では
private GameObject[] buttons = new GameObject[25];
で確保した物は存在していますが

?の結果から
buttons = GameObject.FindGameObjectsWithTag("button");
ここで配列を再構築してるのを理解いただけるかと思います。

仮にTag"button"のGameObjectを3つ配置すると?の結果は3に変化します。

このように1行1行の命令が何をしているのか、そして動きの変化を丁寧に見ている事が大切になりますよ。
参考にしてみてください。
772: 769 2017/08/23(水)12:30 ID:0fyfcMVA(4/4) AAS
訂正:
?の結果は"24"ではなく"25"です。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.033s