回答編集履歴

5

ミス修正

2020/07/16 03:35

投稿

Y0241-N
Y0241-N

スコア1066

test CHANGED
@@ -1,3 +1,7 @@
1
+ 【追記2020/7/16】以下の処理は「毎秒ごとのクリック数」をカウントする処理であり、質問者様の意図する「毎フレーム情報が更新される」という使用とは異なっています。申し訳ございません
2
+
3
+
4
+
1
5
  コルーチンとInvokeRepetingの組み合わせで計測可能です
2
6
 
3
7
 

4

修正

2020/07/16 03:35

投稿

Y0241-N
Y0241-N

スコア1066

test CHANGED
@@ -26,7 +26,9 @@
26
26
 
27
27
  {
28
28
 
29
+ int ClicksPerSecond;
30
+
29
- int ClickCounter;
31
+ int TotalClicksCount;
30
32
 
31
33
 
32
34
 
@@ -38,7 +40,7 @@
38
40
 
39
41
  Application.targetFrameRate = 30; // FPSを変更
40
42
 
41
- InvokeRepeating( "LoopCount",0f,1f);
43
+ InvokeRepeating( "LoopCount",0f,1f);//1秒ごとにコルーチンを呼び出す
42
44
 
43
45
  }
44
46
 
@@ -48,7 +50,7 @@
48
50
 
49
51
  {
50
52
 
51
- StartCoroutine(loop(30));
53
+ StartCoroutine(loop(30));//30回 Whileを繰り返し、それを一回のコルーチンループとする
52
54
 
53
55
  }
54
56
 
@@ -66,7 +68,7 @@
66
68
 
67
69
  if(Input.GetMouseButtonDown(0))
68
70
 
69
- ClickCounter++;
71
+ ClicksPerSecond++;
70
72
 
71
73
 
72
74
 
@@ -74,9 +76,11 @@
74
76
 
75
77
  }
76
78
 
77
- Debug.Log(ClickCounter);
79
+ TotalClicksCount += ClicksPerSecond;
78
80
 
81
+ Debug.Log(ClicksPerSecond + "Click/s TotalClicks : " + TotalClicksCount);
82
+
79
- ClickCounter = 0;
83
+ ClicksPerSecond = 0;
80
84
 
81
85
  }
82
86
 

3

修正

2020/07/16 01:00

投稿

Y0241-N
Y0241-N

スコア1066

test CHANGED
@@ -1,12 +1,14 @@
1
- ん、試験を繰り返しているうちにどうも正確にクリック数がカウントきていない恐れがありま
1
+ コルーチンとInvokeRepetingの組合わせで計測可能で
2
2
 
3
3
 
4
4
 
5
- ~~コルーチンInvokeRepetingの組み合わせ計測可能です
5
+ ざっやっていることを説明すると、Unity Editor上ではFPSを固定するにはproject settingのQualityからOtherのVSync Countを「Don't Sync」と設定し、その後に`Application.targetFrameRate`で指定のFPSに変更する必要があります。Project settingを変更すると後々変更したことを忘れて手間取る場合があるので、`QualitySettings.vSyncCount = 0;`と記述することScene再生時のみ設定を変更出来ま
6
6
 
7
- ざっとやっていることを説明すると`IEnumerator loop(int frame)`のframeが繰り返すフレームの長さなので今回で言えば30、30FPSの中でwhileでループさせ、カウントを取り、30FPS経った時にクリック数を表示、リセット。
8
7
 
8
+
9
+ `IEnumerator loop(int frame)`のframeが繰り返すフレームの長さなので今回で言えば30、30FPSの中でwhileでループさせ、カウントを取り、30FPS経った時にクリック数を表示、リセット。
10
+
9
- これを`InvokeRepeting`で0f開始、1fつまり1秒ごとに`IEnumerator loop(int frame)`を繰り返すことで毎秒のクリック数を集計可能です。~~
11
+ これを`InvokeRepeting`で0f開始、1fつまり1秒ごとに`IEnumerator loop(int frame)`を繰り返すことで毎秒のクリック数を集計可能です。
10
12
 
11
13
 
12
14
 
@@ -20,7 +22,7 @@
20
22
 
21
23
 
22
24
 
23
- public class ClickCount : MonoBehaviour
25
+ public class ClickCountForSecond : MonoBehaviour
24
26
 
25
27
  {
26
28
 
@@ -31,6 +33,10 @@
31
33
  void Start ()
32
34
 
33
35
  {
36
+
37
+ QualitySettings.vSyncCount = 0; // vsyncをOFFにする
38
+
39
+ Application.targetFrameRate = 30; // FPSを変更
34
40
 
35
41
  InvokeRepeating( "LoopCount",0f,1f);
36
42
 
@@ -58,7 +64,7 @@
58
64
 
59
65
  yield return null;
60
66
 
61
- if(Input.GetMouseButton(0))
67
+ if(Input.GetMouseButtonDown(0))
62
68
 
63
69
  ClickCounter++;
64
70
 

2

ミス修正

2020/07/16 00:23

投稿

Y0241-N
Y0241-N

スコア1066

test CHANGED
@@ -1,8 +1,12 @@
1
+ すみません、試験を繰り返しているうちにどうも正確にクリック数がカウントできていない恐れがあります。
2
+
3
+
4
+
1
- コルーチンとInvokeRepetingの組み合わせで計測可能です
5
+ ~~コルーチンとInvokeRepetingの組み合わせで計測可能です
2
6
 
3
7
  ざっとやっていることを説明すると`IEnumerator loop(int frame)`のframeが繰り返すフレームの長さなので今回で言えば30、30FPSの中でwhileでループさせ、カウントを取り、30FPS経った時にクリック数を表示、リセット。
4
8
 
5
- これを`InvokeRepeting`で0f開始、1fつまり1秒ごとに`IEnumerator loop(int frame)`を繰り返すことで毎秒のクリック数を集計可能です。
9
+ これを`InvokeRepeting`で0f開始、1fつまり1秒ごとに`IEnumerator loop(int frame)`を繰り返すことで毎秒のクリック数を集計可能です。~~
6
10
 
7
11
 
8
12
 

1

修正

2020/07/15 08:13

投稿

Y0241-N
Y0241-N

スコア1066

test CHANGED
@@ -22,6 +22,8 @@
22
22
 
23
23
  int ClickCounter;
24
24
 
25
+
26
+
25
27
  void Start ()
26
28
 
27
29
  {
@@ -40,13 +42,15 @@
40
42
 
41
43
  }
42
44
 
45
+
46
+
43
47
  private IEnumerator loop(int frame)
44
48
 
45
49
  {
46
50
 
47
- while (frame > 0) {
51
+ while (frame > 0)
48
52
 
49
-
53
+     {
50
54
 
51
55
  yield return null;
52
56
 
@@ -54,7 +58,7 @@
54
58
 
55
59
  ClickCounter++;
56
60
 
57
-
61
+
58
62
 
59
63
  frame--;
60
64