Unityの既存UIだけで棒グラフを作る(4)
今回はスクリプトで実際にグラフでデータを表示していきます。
前回までの分は以下からご覧ください
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だけで棒グラフを作る まとめ
リンクを以下にまとめました。