【Unity】staticでスコア表示とHP表示 

Unityプログラミング
スポンサーリンク
今回はスコア表示とHP表示のお勉強をしたのでそのコードを書いていきたいと思います。

はっきりいって写経学習してた時はこれくらいなら30分もあればできるなと思ってましたが、何やかんだで結局3時間くらいかかりました。
スポンサーリンク

staticを使ってスコア、HP表示


画面にテキストや画像を表示して、値を増やしたり画像を変形(UI画像)するのはいろいろ方法があります。

例えばFind関数でオブジェクト情報を見つけて、Getcomponent で取得する方法、そしてpublicでインスペクターに入れる方法、あと、public Textを使う方法などなど、自分は今回はこれらの方法を使わずstatic、newを使わずにインスタンスせずに他クラスから呼び出せる方法でやりました。

これを使おうと思ったのはこのstaticが一番簡単だと思ったから(´・ω・`)。

でもなんかコード打ってく内に混乱してきて、写経学習と実際にコード打つのでは全然違いますねやっぱり。

ということで、まずはHPとスコアの初期値を設定していきますここでstaticを使います。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Counter : MonoBehaviour
{
public static int value;
public int startCount = 0;
public static int hp;
public int startHp = 10;

// Start is called before the first frame update
void Start()
{
value = startCount;
hp = startHp;
}
// Update is called once per frame
void Update()
{

}
}

そしてヒエラルキーからTEXTを作り、それをGetcomponent 関数で呼び出します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Forever_Counter : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
GetComponent<Text>().text = "SCORE:" + Counter.value.ToString();

}
}

そして当たり判定、void OnCollisionEnter2Dでぶつかったらその情報をテキストに表示させぶつかったのが矢ならHPから1を引き、コインならスコアを1プラスして完成です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnCollision_Hide : MonoBehaviour
{
public string targetObjectName;
public int addvalue = 1;
// Start is called before the first frame update
private void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.name == targetObjectName)
{
Counter.value += addvalue;
this.gameObject.SetActive(false);
}
}
// Update is called once per frame
void Update()
{

}
}

淡々と説明しましたが、これで3時間かかりました、そしてこれもまだ完成でなくてコードを書き足さないといけません。



そうHP見てくれたら分かると思いますが、普通ならHPが0になったら終わりますが、0になっても終わらず-になってしまうバグを直さないといけません。めんどいのでこれは次回に丸投げします。

ということでUNITY実践のプログラミング、今回はスコアとHP表示についてやりました。

次回は敵キャラを作りそのキャラを動かしてみます、そしてプレイヤーキャラ、エネミーキャラの反転、HP表示0で止まるようにしたいと思います。

コメント

  1. 匿名 より:

    普通ならHPが0になったら終わりますが、0になっても終わらず-になってしまうバグを直さないといけません。

    こんなの、めんどいとか言う前に、大体の検討はつくバグじゃないですか?
    HP=HP−10とか失敗ダメージを加えた式の次に、お得意のIF〜でHP<=0になったかの判定をしてるか、してないかだけじゃないですか?

    プログラムがどの様な流れで動いてるかを認識していれば、発生したバグから「あ〜、たぶん、あの辺りに不具合があるな」と分かるもんですし、
    自分が1から作ったプログラムなら尚更なんですけどね。