質問編集履歴

2

ゲーム部分のコードを全部載せました

2021/05/01 07:24

投稿

Sobasenbei
Sobasenbei

スコア132

test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  しかし、スクリプト内のOnEnable関数で代入したはずの変数stがClickButton関数の変数stに反映されず0になってしまいます。
4
4
 
5
+ こちらはリズム部分のスクリプトです。
6
+
5
7
  ```C#
6
8
 
7
9
 
@@ -192,7 +194,73 @@
192
194
 
193
195
  ```
194
196
 
195
-
197
+ こちらは上のスクリプトなどを動かす大元のスクリプトです
198
+
199
+ ```c#
200
+
201
+ using System.Collections;
202
+
203
+ using System.Collections.Generic;
204
+
205
+ using UnityEngine;
206
+
207
+
208
+
209
+ public class gamedirsc : MonoBehaviour
210
+
211
+ {
212
+
213
+ public int miss = 30;
214
+
215
+ public float now;
216
+
217
+ [SerializeField] rythm1 rythm1;
218
+
219
+ // Start is called before the first frame update
220
+
221
+ void Start()
222
+
223
+ {
224
+
225
+
226
+
227
+ }
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+ // Update is called once per frame
238
+
239
+ void Update()
240
+
241
+ {
242
+
243
+ if (Input.GetMouseButtonDown(2))
244
+
245
+ {
246
+
247
+ now = Time.time;
248
+
249
+ rythm1.enabled = true;
250
+
251
+ }
252
+
253
+ }
254
+
255
+
256
+
257
+
258
+
259
+ }
260
+
261
+
262
+
263
+ ```
196
264
 
197
265
  このコードではスクリプトが開始された時の時間とボタンを押したときの時間の差を求めています。
198
266
 

1

音を流すコードを全部載せました

2021/05/01 07:24

投稿

Sobasenbei
Sobasenbei

スコア132

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,68 @@
1
1
  Unity2020でリズムゲームを作ろうと考えており、時間を計るのにTime.timeの差を利用しようと思っています。
2
2
 
3
- しかし、スクリプト内のOnEnable関数で代入したはずの変数stがClickButton関数の変数stに反映されず0になってしまいます。```C#
3
+ しかし、スクリプト内のOnEnable関数で代入したはずの変数stがClickButton関数の変数stに反映されず0になってしまいます。
4
+
5
+ ```C#
6
+
7
+
8
+
9
+ using System.Collections;
10
+
11
+ using System.Collections.Generic;
12
+
13
+ using UnityEngine;
14
+
15
+ using UnityEngine.UI;
16
+
17
+
18
+
19
+ public class rythm1 : MonoBehaviour
20
+
21
+ {
22
+
23
+ [SerializeField] GameObject panbutton;
24
+
25
+ [SerializeField] GameObject lettucebutton;
26
+
27
+ [SerializeField] GameObject patebutton;
28
+
29
+
30
+
31
+ [SerializeField] Button panb;
32
+
33
+
34
+
35
+ Vector2 leftup = new Vector2(-270, -450);
36
+
37
+ Vector2 leftbottom = new Vector2(-270, -770);
38
+
39
+ Vector2 rightup = new Vector2(270, -450);
40
+
41
+ Vector2 rightbottom = new Vector2(270, -770);
42
+
43
+
44
+
45
+ [SerializeField] AudioSource audiosource;
46
+
47
+ [SerializeField] AudioClip clip;
48
+
49
+
50
+
51
+ float st;
52
+
53
+
54
+
55
+ [SerializeField] gamedirsc da;
56
+
57
+
58
+
59
+ [SerializeField] GameObject canvas;
60
+
61
+ GameObject pan;
62
+
63
+ GameObject lettuce;
64
+
65
+ GameObject pate;
4
66
 
5
67
 
6
68
 
@@ -8,33 +70,79 @@
8
70
 
9
71
  {
10
72
 
73
+
74
+
75
+ pan = (GameObject)Instantiate(panbutton);
76
+
77
+ pan.transform.SetParent(canvas.transform,false);
78
+
79
+ lettuce = (GameObject)Instantiate(lettucebutton);
80
+
81
+ lettuce.transform.SetParent(canvas.transform, false);
82
+
83
+ pate = (GameObject)Instantiate(patebutton);
84
+
85
+ pate.transform.SetParent(canvas.transform, false);
86
+
87
+
88
+
11
89
  st = Time.time;
12
90
 
13
91
 
14
92
 
15
93
  audiosource.PlayOneShot(clip);
16
94
 
95
+ StartCoroutine("coroutine");
96
+
17
97
 
18
98
 
19
99
  Debug.Log(st);
20
100
 
21
101
  }
22
102
 
23
-
24
-
103
+
104
+
25
- public void ClickButton()
105
+ private IEnumerator coroutine()
26
-
106
+
27
- {
107
+ {
108
+
109
+ yield return new WaitForSeconds(5.33f);
110
+
111
+ Destroy(pan);
112
+
113
+ Destroy(lettuce);
114
+
115
+ Destroy(pate);
116
+
117
+ enabled = false;
118
+
119
+ }
120
+
121
+
122
+
123
+ // Start is called before the first frame update
124
+
125
+ void Start()
126
+
127
+ {
128
+
129
+
130
+
131
+ }
132
+
133
+
134
+
135
+ public void ClickPan()
136
+
137
+ {
138
+
139
+ Debug.Log(st);
28
140
 
29
141
  var beat = Time.time;
30
142
 
31
- var don = beat - st;
143
+ var don = beat - this.st;
32
-
33
- Debug.Log(don);
144
+
34
-
35
- Debug.Log(beat);
145
+
36
-
37
- Debug.Log(st);
38
146
 
39
147
  if ((don >= 2.46f & don <= 2.86f)|(don >= 4.46f & don <= 4.86f))
40
148
 
@@ -42,6 +150,8 @@
42
150
 
43
151
  Debug.Log("Great!");
44
152
 
153
+ Debug.Log(don);
154
+
45
155
  }
46
156
 
47
157
  else
@@ -52,10 +162,34 @@
52
162
 
53
163
  Debug.Log("Miss!");
54
164
 
165
+ Debug.Log(don);
166
+
55
167
  }
56
168
 
57
169
 
58
170
 
171
+ }
172
+
173
+ // Update is called once per frame
174
+
175
+ void Update()
176
+
177
+ {
178
+
179
+ if (Input.GetMouseButtonDown(0))
180
+
181
+ {
182
+
183
+ Debug.Log(da);
184
+
185
+ }
186
+
187
+ }
188
+
189
+ }
190
+
191
+
192
+
59
193
  ```
60
194
 
61
195
 
@@ -66,4 +200,6 @@
66
200
 
67
201
  ボタンをクリックした時に呼び出される関数ではほかの変数を参照することができないのでしょうか。
68
202
 
203
+ 僕の想像では、プレハブ化して生成されたボタンであることが原因だと思っているのですが。
204
+
69
205
  初めての質問でおかしな書き方になってしまい申し訳ありません。