実現したいこと
unityでオブジェクトをクリックしたら消えるようにしたのですが
スコア加算のやり方がわかりません。
オブジェクトをクリックして消えたらスコアを一点加算するようにしたいです。
下のソースコードはオブジェクトをクリックしたら消えるソースコードで
このサイトを参考に作りましたhttps://qiita.com/Sena_0226/items/27ca4af593f67efb4c5b
TouchDeleteScriptはタグをmugiwaraからmatoに変えること以外はなにも変更していません。
TouchDeleteScriptのスプリクトを変更しオブジェクトをクリックして消えたら一点加算するようになりましたが作ったオブジェクトを複製して設置しても一個クリックして消えたら他の複製したものをクリックしても
反応がありません。
この場合どこを修正すればよいのでしょうか。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TouchDeleteScript : MonoBehaviour
{
GameObject clickedGameObject;
public SystemMain Sm; //ヒエラルキーのSystemMainと紐づける
private int Status; //準備ができたかどうかを判断する変数
// 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); } { if (Status == 0) { Sm.Score += 1; //スコア加算していく数字 Destroy(this.gameObject); //オブジェクトが消えた時にスコア加算 } void Start() { //SyatemMainを探す Sm = GameObject.Find("SystemMain").GetComponent<SystemMain>(); } } } } }
}
前提**_**
_
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C#
ソースコード ### 試したこと このサイトを参考にスコア加算をしようとしました。 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をドラッグ&ドロップします。 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です。

回答1件
あなたの回答
tips
プレビュー