にしのクエスト2

情報処理技術者試験と資格学校講師の日常

20240615101703

Unityで学ぶプログラミング Game ブロック崩し(8)得点表示します!

 にしの流ブロック崩しの巻。

www.nsnq.tech

前回の続きです。

得点表示します!

ScoreScriptを作成します。

f:id:koharuwest:20190522223525p:plain

内容はこんな感じです。(後で説明します)

f:id:koharuwest:20190522223745p:plain
Create Emptyで空のGameDirectorを作成(あるか)

f:id:koharuwest:20190522223824p:plain


それにScoreControlをアタッチしておく

f:id:koharuwest:20190522223956p:plain

あとはBlockControlを書き換えておきます。

f:id:koharuwest:20190522224109p:plain

ScoreScriptの詳しい説明

点数だけは外部から変更できるようpublicにします。
あとは、スコアのオブジェクト用とスコアの文字列
収納用です。

public int ten = 0;
GameObject txt;
string Score;


まずは、スコアのオブジェクトを見つけておきます。
void Start()
{
txt = GameObject.Find("ScoreText");
}


そして、毎フレームごとに得点を更新します。
public void Update()
{

点数の値を文字列に変換し、スコアの文字列を作成

Score = "SCORE:" + ten.ToString();

発見しておいた3Dテキストオブジェクトを書き換えます。
txt.GetComponent<TextMesh>().text = Score;
}

BlockControlの詳しい説明

ブロックからは得点のtenが見えないので
GameObject GD;
ScoreScript SS;


void Start()
{
ゲームディレクターを見つけて
GD = GameObject.Find("GameDirector");

その中のスクリプトをゲットしておく
SS = GD.GetComponent<ScoreScript>();
}

衝突したら
void OnCollisionEnter(Collision col)
{
if (col.gameObject.name == "Ball")
{
相手のスクリプト内の変数を書き換えて
SS.ten += 100;

自分を消すのだよ
Destroy(this.gameObject, 0.1f);
}
}


これで得点が更新されるようになります。

次回は残機数の表示と、ゲームオーバーの
設定をしてみましょう。

f:id:koharuwest:20190512083743p:plain