アフィリエイト広告を利用しています

現在ははてなブログで投稿しています!

広告

posted by fanblog

2021年01月11日

【unity】複数の値でゲージ(メーター)を作る

今回は、複数の値を保持するゲージ(メーター?)らしき何かを作りました。
こんな感じのアレです

複数の値でメーターを作る.PNG

とはいっても、ImageのFillAmountを使うメーターの応用です。



FillAmountを使ったゲージの実装


これも記事に入れてしまうとかなり長くなりそうなので、別記事を紹介したいと思います。

nekoromorph様の
Unityで円形のゲージを作ってスクリプトで増減させる
です。

かなり分かりやすいです。

実装

まず、紹介したブログを参考にゲージを一つ作り、それを複製します。

インスペクタはこんな感じ。

(見やすいようにFillAmountは適当な値にしています)

ゲージ_インスペクタ.PNG

今回はBlue、Green、Redの3つに複製しました。

次はコードを書きます。

解説…といえるほど難しい処理はしていません。

要は、ゲージのRectTransformのrotationを弄って、2個目以降のゲージの始点を変えているところくらいです。

using UnityEngine;
using UnityEngine.UI;
public class MultiGageTest : MonoBehaviour
{
// ゲージのImage
[SerializeField] private Image bImg;
[SerializeField] private Image gImg;
[SerializeField] private Image rImg;
// 各ゲージの値
[SerializeField] private float bVal;
[SerializeField] private float gVal;
[SerializeField] private float rVal;
// 各ゲージのRectTransform 青は調整する必要がないのでいらない
// RectTransform bImgRt;
RectTransform gImgRt;
RectTransform rImgRt;
private void Start() {
// 各ゲージのRectTransform 取得
// bImgRt = bImg.GetComponent<RectTransform>();
gImgRt = gImg.GetComponent<RectTransform>();
rImgRt = rImg.GetComponent<RectTransform>();
}
private void Update() {
// メータの最大値は3つの値を足したもの
float max = bVal + gVal + rVal;
// maxに対するレートを算出
bImg.fillAmount = bVal / max;
gImg.fillAmount = gVal / max;
rImg.fillAmount = rVal / max;
// 青ゲージの終点に緑ゲージの始点を合わせる
gImgRt.rotation = Quaternion.Euler(0, 0, bImg.fillAmount * -360.0f);
// (青ゲージ + 緑ゲージ)の終点に赤ゲージの始点を合わせる
rImgRt.rotation = Quaternion.Euler(0, 0, (bImg.fillAmount + gImg.fillAmount) * -360.0f);
}
}


あとはControllerにでもスクリプトを付けて、

Imageをそれぞれ指定して…

ゲージ_インスペクタ_Controller.PNG

valをいじれば動きます。

ゲージ_完成.PNG
値が全て1なので綺麗に三分割


終わり!

要改造ですが、これを使えば2種類のゲージでも、なんなら4種類以上でもいけます。

いえい!

ではでは、今回はこれで!!
投稿コメント
* 気軽にコメントくださいー *

※ ブログに表示されるのは、主の承認が必要なので時間がかかります!
  コメントに気づかない場合もありますので、返信が遅れる場合も...

お名前:

メールアドレス:


ホームページアドレス:

コメント: 必須項目

この記事へのトラックバックURL
https://fanblogs.jp/tb/10458004
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索
プロフィール
ピノまっちゃさんの画像
ピノまっちゃ
どうも、ピノまっちゃ(PinoMatcha)です!
ゲーム制作をちょこまか頑張ってる大学生で、プログラミングも独学です。
ですので実力は全然ですが、最善を尽くして頑張っております!

名前の由来はピノの抹茶味が好きだからじゃなくて、ピノと抹茶が好きだからです!


更新 : 不定期!
プロフィール
新着記事
最新のコメント
更新事項
2018/8/2 定期更新への変更の報告に追記しました。

2018/5/10 「続きを読む」機能の使い方がやっと分かりました。

2017/9/14 プレイヤーを動かす:関数の解説の一部を書き直しました。

2017/8/1 【unity5】カメラ移動・回転させる方法に多数の画像を追加しました。
カテゴリーアーカイブ
YouTubeチャンネル
Fantiaリンク
よければ応援お願いします!

Pixivアカウント
現在、調整中です…
×

この広告は30日以上新しい記事の更新がないブログに表示されております。