#スコア加算
スコア加算する方法についてご紹介します。
まず、GameObjectを作ります。
SystemMainと名前つけました。
SystemMainと言うC#スクリプトを作成。
私はブロック崩しを作っていて消えたらスコア加算にしたいので、Blockスクリプト。
書いていくのはこの2つです。
SystemMain
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //UIを使用しているため、忘れずに記入
public class SystemMain : MonoBehaviour
{
public int Score; //Score変数を定義
//スクリプトをアタッチした時にスコア加算したいTextと紐づける
public Text ScoreText;
void Start()
{
Score = 0; //スタート時の表示
}
// Update is called once per frame
void Update()
{
ScoreText.text = string.Format("{0}", Score); //Textのフォーマット
}
}
Block
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Block : MonoBehaviour
{
public SystemMain Sm; //ヒエラルキーのSystemMainと紐づける
private int Status; //準備ができたかどうかを判断する変数
void OnCollisionEnter(Collision collision)
{
if (Status == 0)
{
Sm.Score += 100; //スコア加算していく数字
Destroy(this.gameObject); //オブジェクトが消えた時にスコア加算
}
}
void Start()
{
//SyatemMainを探す
Sm = GameObject.Find("SystemMain").GetComponent<SystemMain>();
Status = 0; //0だったらCllisionのif文が実行される
}
}
ここまで出来たら
SystemMainはSyatemMainオブジェクトへアタッチ。
Blockは消えてスコア加算されたいオブジェクトへアタッチ。
アタッチ出来たらアタッチしたInspector上のスクリプトに注目。
SystemMainにはScoreText
BlockにはSmに何かを入れれます。
これは
SystemMain
public Text ScoreText;
Block
public SystemMain Sm;
を記載したからです。
これでヒエラルキーと紐づけます。
SystemMainのScoreTextにはスコア表示したいTextをドラッグ&ドロップ
BlockのSmにはSyatemMainをドラッグ&ドロップします。
ちなみに
SyatemMain
public int Score;
はスコア加算がInspector上にも表示されます。
これで無事、スコア加算が出来ました!
このやり方は調べてもあんまり情報を得ることが出来なかったのでお役に立てると幸いです。