質問編集履歴

2

変更

2023/09/04 15:50

投稿

Haru560
Haru560

スコア5

test CHANGED
File without changes
test CHANGED
@@ -6,25 +6,10 @@
6
6
  このサイトを参考に作りましたhttps://qiita.com/Sena_0226/items/27ca4af593f67efb4c5b
7
7
  TouchDeleteScriptはタグをmugiwaraからmatoに変えること以外はなにも変更していません。
8
8
 
9
+ TouchDeleteScriptのスプリクトを変更しオブジェクトをクリックして消えたら一点加算するようになりましたが作ったオブジェクトを複製して設置しても一個クリックして消えたら他の複製したものをクリックしても
10
+ 反応がありません。
11
+ この場合どこを修正すればよいのでしょうか。
9
12
 
10
-
11
-
12
-
13
-
14
- ### 前提**_**
15
- **_**
16
-
17
-
18
- ### 発生している問題・エラーメッセージ
19
-
20
- ```
21
- エラーメッセージ
22
- ```
23
-
24
- ### 該当のソースコード
25
- C#
26
- ```ここに言語名を入力
27
- ソースコード
28
13
  using System.Collections;
29
14
  using System.Collections.Generic;
30
15
  using UnityEngine;
@@ -32,6 +17,8 @@
32
17
  public class TouchDeleteScript : MonoBehaviour
33
18
  {
34
19
  GameObject clickedGameObject;
20
+ public SystemMain Sm; //ヒエラルキーのSystemMainと紐づける
21
+ private int Status; //準備ができたかどうかを判断する変数
35
22
 
36
23
  // Start is called before the first frame update
37
24
  void Start()
@@ -57,15 +44,48 @@
57
44
  {
58
45
  Destroy(clickedGameObject);
59
46
  }
47
+ {
48
+ if (Status == 0)
49
+ {
50
+ Sm.Score += 1; //スコア加算していく数字
51
+ Destroy(this.gameObject); //オブジェクトが消えた時にスコア加算
52
+ }
53
+ void Start()
54
+ {
55
+ //SyatemMainを探す
56
+ Sm = GameObject.Find("SystemMain").GetComponent<SystemMain>();
57
+ }
58
+ }
60
59
  }
61
60
  }
62
61
  }
63
62
  }
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+ ### 前提**_**
72
+ **_**
73
+
74
+
75
+ ### 発生している問題・エラーメッセージ
76
+
77
+ ```
78
+ エラーメッセージ
64
79
  ```
65
80
 
81
+ ### 該当のソースコード
82
+ C#
83
+ ```ここに言語名を入力
84
+ ソースコード
85
+
86
+
66
87
  ### 試したこと
67
- このサイトを参考にスコア加算をしようとしました
88
+ このサイトを参考にスコア加算をしようとしました
68
- 上手くいきませんでした。
69
89
  https://qiita.com/yuki_0409/items/0eb63eac3641a5a0d5bb
70
90
 
71
91
  TouchDeleteScriptはタグをmugiwaraからmatoに変えること以外はなにも変更していません。
@@ -88,9 +108,7 @@
88
108
 
89
109
  SystemMainのScoreTextにはスコア表示したいTextをドラッグ&ドロップ
90
110
  matoのSmにはSyatemMainをドラッグ&ドロップします。
91
- これを試したところスコアのテキストは0表示になりましたがオブジェクトをクリックして
111
+
92
- 消してもスコア加算にはなりません。プログラムに関しては初心者のため何が悪いかもわかっていない
93
- 状況です。よろしくお願いいたします。下の方にコードがあります。
94
112
 
95
113
  SystemMainのコード
96
114
 

1

より詳しく記載

2023/09/04 02:43

投稿

Haru560
Haru560

スコア5

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,8 @@
4
4
  オブジェクトをクリックして消えたらスコアを一点加算するようにしたいです。
5
5
  下のソースコードはオブジェクトをクリックしたら消えるソースコードで
6
6
  このサイトを参考に作りましたhttps://qiita.com/Sena_0226/items/27ca4af593f67efb4c5b
7
+ TouchDeleteScriptはタグをmugiwaraからmatoに変えること以外はなにも変更していません。
8
+
7
9
 
8
10
 
9
11
 
@@ -66,7 +68,86 @@
66
68
  上手くいきませんでした。
67
69
  https://qiita.com/yuki_0409/items/0eb63eac3641a5a0d5bb
68
70
 
71
+ TouchDeleteScriptはタグをmugiwaraからmatoに変えること以外はなにも変更していません。
72
+ 正確にはTouchDeleteScriptについてはタグしか変更しておらず
73
+ スコア加算は別のオブジェクトとC#スプリクトを作りました。
74
+ まずGameObjectを用意しSystemMainと名付けSystemMainと言うC#スクリプトを作成しました
75
+ その後SystemMainとは別のmatoスプリクトを作成し
76
+ SystemMainはSyatemMainオブジェクトへアタッチ。
77
+ matoは消えてスコア加算されたいオブジェクトへアタッチ。
78
+ アタッチ出来たらアタッチしたInspector上のスクリプトに注目。
79
+ SystemMainにはScoreText
80
+ matoにはSmに何かを入れれます。
81
+ これは
82
+ SystemMain
83
+ public Text ScoreText;
84
+ mato
85
+ public SystemMain Sm;
86
+ を記載したからです。
87
+ これでヒエラルキーと紐づけます。
88
+
89
+ SystemMainのScoreTextにはスコア表示したいTextをドラッグ&ドロップ
90
+ matoのSmにはSyatemMainをドラッグ&ドロップします。
91
+ これを試したところスコアのテキストは0表示になりましたがオブジェクトをクリックして
92
+ 消してもスコア加算にはなりません。プログラムに関しては初心者のため何が悪いかもわかっていない
93
+ 状況です。よろしくお願いいたします。下の方にコードがあります。
94
+
95
+ SystemMainのコード
96
+
97
+ using System.Collections;
98
+ using System.Collections.Generic;
99
+ using UnityEngine;
100
+ using UnityEngine.UI; //UIを使用しているため、忘れずに記入
101
+
102
+ public class SystemMain : MonoBehaviour
103
+ {
104
+ public int Score; //Score変数を定義
105
+ //スクリプトをアタッチした時にスコア加算したいTextと紐づける
106
+ public Text ScoreText;
107
+
108
+ void Start()
109
+ {
110
+ Score = 0; //スタート時の表示
111
+ }
112
+
113
+ // Update is called once per frame
114
+ void Update()
115
+ {
116
+ ScoreText.text = string.Format("{0}", Score); //Textのフォーマット
117
+ }
118
+ }
119
+
120
+ matoのコード
121
+
122
+ using System.Collections;
123
+ using System.Collections.Generic;
124
+ using UnityEngine;
125
+
126
+ public class mato : MonoBehaviour
127
+ {
128
+ public SystemMain Sm; //ヒエラルキーのSystemMainと紐づける
129
+ private int Status; //準備ができたかどうかを判断する変数
130
+
131
+ void OnCollisionEnter(Collision collision)
132
+ {
133
+ if (Status == 0)
134
+ {
135
+ Sm.Score += 1; //スコア加算していく数字
136
+ Destroy(this.gameObject); //オブジェクトが消えた時にスコア加算
137
+ }
138
+ }
139
+ void Start()
140
+ {
141
+ //SyatemMainを探す
142
+ Sm = GameObject.Find("SystemMain").GetComponent<SystemMain>();
143
+ Status = 0; //0だったらCllisionのif文が実行される
144
+ }
145
+ }
146
+
147
+
148
+
69
149
  ここに問題に対して試したことを記載してください。
150
+
70
151
 
71
152
  ### 補足情報(FW/ツールのバージョンなど)
72
153