Unityの既存UIだけで棒グラフを作る(4)

今回はスクリプトで実際にグラフでデータを表示していきます。

前回までの分は以下からご覧ください

Unityの既存UIだけで棒グラフを作る(1)

Unityの既存UIだけで棒グラフを作る(2)

Unityの既存UIだけで棒グラフを作る(3)

Scriptを書くための準備

まずHierarchyのCreateからCreate Emptyを選択します。そうすると、GameObjectができます。

次にProjectのCreateから、C# Scriptを選択します。スクリプト名をGraphに変更します。

Script

Graphスクリプトには以下のコードを書きます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Graph : MonoBehaviour
{
   [SerializeField]
   private GameObject content;
   [SerializeField]
   private GameObject graphBar;
   private GameObject[] instances = new GameObject[100];
   private int i;
   
   // Start is called before the first frame update
   void Start()
   {
       i = 1;
   }
   // Update is called once per frame
   void Update()
   {
       //クリックした時に呼び出される
       if (Input.GetButtonDown("Fire1"))
       {
           //棒グラフの値 今回は0~1の乱数
           float xValue = Random.value;
       
           //graphBar の生成
           instances[i] = Instantiate<GameObject>(graphBar);
           instances[i].transform.parent = content.transform;
           instances[i].name = "Data" + i;  //Objectの名前の変更
           
           //bar の長さの変更
           GameObject bar = GameObject.Find("Data" + i);  //生成したBarを見つける
           bar.GetComponent<Slider>().value = xValue;  //intであればfloatに変換する
           // X_LavelをText に出力
           GameObject x_lavel = bar.gameObject.transform.Find("Background/X_Lavel").gameObject;  //X_Lavelを見つける
           x_lavel.GetComponent<Text>().text = "x_ " + i;
           
           //DataをText に出力
           if (xValue >= 0.15)  //どちらのTextに出力するかifで分岐
           {
               GameObject data = bar.gameObject.transform.Find("Handle Slide Area/Handle/Data").gameObject;
               data.GetComponent<Text>().text = xValue + "%";
           }
           else
           {
               GameObject data = bar.gameObject.transform.Find("Handle Slide Area/Handle/DataUp").gameObject;
               data.GetComponent<Text>().text = xValue + "%";
           }
       
           i ++;
       } 
   }
}


仕上げにドロップ

スクリプトが書けたら、GraphスクリプトをGameObjectにドロップします。続けてGameObjectのContentにContent、Graph BarにSlider(プレハブ)をドロップします。これで基本は完成です。以下のようなグラフができたはずです。

次回、これに少しプラスして、基準となるグラフを固定で配置します。

Unityの既存UIだけで棒グラフを作る まとめ

リンクを以下にまとめました。

1 / 2 / 3 / 4 / 5

いいなと思ったら応援しよう!