[Unity]ライフの残をUIで表示する方法
プレイヤーの残りをUIにイメージで表示したいことってありますよね
アイコンを表示することで残りを表すのですが、「ライフアイコンを表示する」メソッドにすることで汎用性を持たせることができます
実行結果
上矢印キーでアイコンが増えます
下矢印キーでアイコンが減ります
シーンの構成
スクリプト
using UnityEngine;
public class IconController : MonoBehaviour
{
[SerializeField]
GameObject[] icon;
int num = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
num++;
ShowIcon(num);
}
if (Input.GetKeyDown(KeyCode.DownArrow))
{
num--;
ShowIcon(num);
}
}
void ShowIcon(int number)
{
for (int i = 0; i < icon.Length; i++)
{
icon[i].SetActive(false);
}
for (int i = 0; i < number; i++)
{
icon[i].SetActive(true);
}
}
}
ShowIconメソッドの別の形
void ShowIcon(int number)
{
for (int i = 0; i < icon.Length; i++)
{
if (i < number)
{
icon[i].SetActive(true);
}
else
{
icon[i].SetActive(false);
}
}
}
ここまでは不要ですが、参考のため(for文とcontinueの関係)
void ShowIcon(int number)
{
for (int i = 0; i < icon.Length; i++)
{
if (i < number)
{
icon[i].SetActive(true);
continue;
}
icon[i].SetActive(false);
}
}
ここまでは不要ですが、参考のため(三項演算子)
void ShowIcon(int number)
{
for (int i = 0; i < icon.Length; i++)
{
icon[i].SetActive(i < number ? true : false);
}
}
ここまでは不要ですが、参考のため(三項演算子も省略)
void ShowIcon(int number)
{
for (int i = 0; i < icon.Length; i++)
{
icon[i].SetActive(i < value);
}
}
ShowIconメソッドの引数が範囲を超えた場合、アクセスするとエラーになるので次のコードをメソッドの最初に追加すればいいでしょう
if (number < 0 || number > icon.Length)
{
return;
}
C#プロパティを使ったエラー制御されたコード
using UnityEngine;
public class IconController : MonoBehaviour
{
[SerializeField]
GameObject[] icon;
int icons;
public int Icons
{
get => icons;
set
{
if (value < 0 || value > icon.Length)
{
return;
}
icons = value;
for (int i = 0; i < icon.Length; i++)
{
icon[i].SetActive(i < value ? true : false);
}
}
}
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
Icons++;
}
if (Input.GetKeyDown(KeyCode.DownArrow))
{
Icons--;
}
if (Input.GetKeyDown(KeyCode.H))
{
Debug.Log(Icons);
}
}
}
ディスカッション
コメント一覧
まだ、コメントがありません