質問: graph; } } } } ``` ### 試したこと 考えたこと Unityで、棒グラフを作成するには、【Unity】縦棒グラフ作ってみる – LineRender編 のような記事がありましたが、実現したい、JSONを用いてグラフを作成しているようなサイトが見つからず、行き詰っています。 そこで考えたことは、HPゲージでよくみられるスライダーを用いて棒グラフを作成することです。 ![グラフ図1](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/bcbb41f3ca0ba305453b2fd2b25aff40.png)図1 このように縦にグラフを重ねて表示したいと考えました。 図1の表示例では、○と×の合計数が30で○の数が16という表示です。 Graph.csでは、取得したJSONデータから動的に作成したボタン上にTextとして表示するスクリプトで、今回はあらかじめ、ボタンの子オブジェクトとしてスライダーをコンポーネントし、プレハブとしています。 ### エラー、困っていること Graph.csの表示では、しっかりとJSONから取得したデータをボタン上にテキストとして出力できています。 試しにスライダーのゲージの値を最大値30のうち、28に設定したとこる、作成されたボタン2つの内、初めのボタンだけがゲージの値が28であり、もう片方の値は何変わりませんでした。 調べたところ、子オブジェクトのインスタンス化?をする必要があるのではと考えましたが、いまいち良く分かりません... どのようなコードを用いれば、動的に作成したボタンに、JSONから取得した値をスライダーのバーの値に反映することができるのでしょうか。 ### 補足情報 まだプログラミングを始めてまだ間もなく、Unityやphpの知識、理解が追い付いていない点等あり、また拙い文章ではございますが、何卒お力をお借りできませんでしょうか。 よろしくお願い致します。
回答: `_slider = GameObject.Find("Slider").GetComponent();` この部分ですが、これは「Sliderという名前のオブジェクトを見付けて、そのオブジェクトに付いたSliderコンポーネントを_slider変数に代入する」というコードです。 同名のオブジェクトがシーン上に複数ある場合、Unityは最初の1つしか見付けません(各オブジェクトには見えないIDが振られており、同名オブジェクトの中でIDが一番若いものを取得します)。 つまりforeachで幾ら繰り返そうが、対象としているのが「(最初に見付けた)Sliderという名前のオブジェクト」なので1つしか変化しないわけです。 Sliderオブジェクトの名前をそれぞれ変更するなどして、別々のオブジェクトを見付けられるようにすれば解決するかと思います。