実現したいこと
unityでオブジェクトをクリックしたら消えるようにしたのですが
スコア加算のやり方がわかりません。
オブジェクトをクリックして消えたらスコアを一点加算するようにしたいです。
下のソースコードはオブジェクトをクリックしたら消えるソースコードで
このサイトを参考に作りましたhttps://qiita.com/Sena_0226/items/27ca4af593f67efb4c5b
TouchDeleteScriptはタグをmugiwaraからmatoに変えること以外はなにも変更していません。
前提**_**
_
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C#
ソースコード using System.Collections; using System.Collections.Generic; using UnityEngine; public class TouchDeleteScript : MonoBehaviour { GameObject clickedGameObject; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { clickedGameObject = null; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit2D hitSprite = Physics2D.Raycast((Vector2)ray.origin, (Vector2)ray.direction); if (hitSprite == true) { clickedGameObject = hitSprite.transform.gameObject; if (clickedGameObject.tag == "mato") { Destroy(clickedGameObject); } } } } }
試したこと
このサイトを参考にスコア加算をしようとしましたが
上手くいきませんでした。
https://qiita.com/yuki_0409/items/0eb63eac3641a5a0d5bb
TouchDeleteScriptはタグをmugiwaraからmatoに変えること以外はなにも変更していません。
正確にはTouchDeleteScriptについてはタグしか変更しておらず
スコア加算は別のオブジェクトとC#スプリクトを作りました。
まずGameObjectを用意しSystemMainと名付けSystemMainと言うC#スクリプトを作成しました
その後SystemMainとは別のmatoスプリクトを作成し
SystemMainはSyatemMainオブジェクトへアタッチ。
matoは消えてスコア加算されたいオブジェクトへアタッチ。
アタッチ出来たらアタッチしたInspector上のスクリプトに注目。
SystemMainにはScoreText
matoにはSmに何かを入れれます。
これは
SystemMain
public Text ScoreText;
mato
public SystemMain Sm;
を記載したからです。
これでヒエラルキーと紐づけます。
SystemMainのScoreTextにはスコア表示したいTextをドラッグ&ドロップ
matoのSmにはSyatemMainをドラッグ&ドロップします。
これを試したところスコアのテキストは0表示になりましたがオブジェクトをクリックして
消してもスコア加算にはなりません。プログラムに関しては初心者のため何が悪いかもわかっていない
状況です。よろしくお願いいたします。下の方にコードがあります。
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のフォーマット }
}
matoのコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class mato : MonoBehaviour
{
public SystemMain Sm; //ヒエラルキーのSystemMainと紐づける
private int Status; //準備ができたかどうかを判断する変数
void OnCollisionEnter(Collision collision) { if (Status == 0) { Sm.Score += 1; //スコア加算していく数字 Destroy(this.gameObject); //オブジェクトが消えた時にスコア加算 } } void Start() { //SyatemMainを探す Sm = GameObject.Find("SystemMain").GetComponent<SystemMain>(); Status = 0; //0だったらCllisionのif文が実行される }
}
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
unityのバージョンは2022.3.6f1です。

0 コメント