実現したいこと
シーン開始時には無かったオブジェクトがprefabクローンで×10個生成されていて
その10個のprefabにはそれぞれに情報が格納されているのですが
↑その情報を取得したい時の書き方がわかりません
例えば画像に出ている ItemNumber という情報を取得したいです
発生している問題・分からないこと
これがprefabでなければ画像の場所(ItemNumber)に格納されている
ItemNumber(画像では 6 や 8 が格納されているのが見えると思います)の取得したい時の書き方はわかっているつもり
var ItemNumber01 = GetComponent<Slot>().ItemNumber;
なのですが、これが後から生成されたprefabで名前がどれも同じ Slot(Clone) なのがとてもやっかいです・・・
該当のソースコード
10スロット有るので変数を10個作ってそれぞれのSlot(Clone) のItemNumber入っている情報を取得したいのですが・・・ var ItemNumber01 = GetComponent<Slot(Clone)>().ItemNumber; ???書き方がわからない var ItemNumber02 = GetComponent<Slot(Clone)>().ItemNumber; var ItemNumber03 = GetComponent<Slot(Clone)>().ItemNumber; var ItemNumber04 = GetComponent<Slot(Clone)>().ItemNumber; var ItemNumber05 = GetComponent<Slot(Clone)>().ItemNumber; var ItemNumber06 = GetComponent<Slot(Clone)>().ItemNumber; var ItemNumber07 = GetComponent<Slot(Clone)>().ItemNumber; var ItemNumber08 = GetComponent<Slot(Clone)>().ItemNumber; var ItemNumber09 = GetComponent<Slot(Clone)>().ItemNumber; var ItemNumber10 = GetComponent<Slot(Clone)>().ItemNumber;
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
後から生成された(Clone)が付いてしまったprefabの取得の方法方法は難解です
一個だけなら強引にFindで(Clone)も名前に付け足して検索したりした事も有りましたが
今回、10個全部同じ名前なのでやり方がわからず6時間ぐらい調べ続けて困りはてています
補足
特になし
public static int[] ItemNumber = new int[10]; //static 配列
↑のようなstatic 配列をわざわざ作っておいて、ItemNumberが画像のslotのItemNumberへと格納されるのと同時に 作ったstatic 配列にも同じItemNumberを入れておいて後でそれを使う。。。という方法で強引に動かしてます。
slot(Clone)の中のItemNumberが参照出来ればこんな回りくどいことはしなくて良さそうなのですが
その部分を参照したい時の書き方がどうしてもわからなくて遠回り かつ、おかしな方法だと思うけどとりあえず動く状態・・・です。
本来の目的の値を参照してるわけではなくて目的の値の格納時に別の変数にも同じ値を入れておいてそれを参照してます・・・・とりあえずの処置という感じ
以前の質問時にprefabをインスタンス化したときにそのインスタンスを配列に入れればどうですか?って形で回答したかと思います。
その時配列の定義のところで「スコープを考えて適切な場所で配列を定義」と書いていたかと思います。
これはこの質問のように後で使用するときのことを考えてアクセスできるように定義してくださいといった意味でした。
このインスタンス作成時の配列を使えば
item[1].ItemNumber
とかでアクセスできるのではないですか?
コメントありがとうございます。以前の質問の時のように記述した場合
item[1].ItemNumber だと別のスクリプトで使いたい場合、
Slot[] slot = new Slot[10];
↑この書き方でスロットの宣言をしていても別のスクリプトで使いたい場合、書けないので
スロットの宣言を static でしてしまう↓ という方法で問題ないのでしょうか。
public static Slot[] slot = new Slot[10];
Aのスクリプトで宣言した配列(この場合 Slot[] slot)を
BやCのスクリプトでも使いたい、となる事は結構有ってこの場合の解決策として
public static Slot[] slot = new Slot[10];
のようにstaticにしてしまうのは特に問題無い事なのでしょうか。

回答1件
あなたの回答
tips
プレビュー