teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

文言修正

2021/04/04 11:23

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -15,7 +15,7 @@
15
15
  `FixedUpdate`は`Update`とまったく違います。`Update`は期待するFPS(`Application.targetFrameRate`)に達するまで出来る限り呼んでくれます。
16
16
  `FixedUpdate`はProject Settingsで決めた一定間隔で呼ばれるものです。
17
17
 
18
- それなら一定間隔で呼ばれる`FixedUpdate`で処理すれば良いと思うかもしれませんが、処理落ちした次のフレームでまた別の処理を呼ばれ処理しきれないより、終わるまで少し停止してくれた方が端末に優しいと思いませんか?
18
+ それなら一定間隔で呼ばれる`FixedUpdate`で処理すれば良いと思うかもしれませんが、処理落ちした次のフレームでまた別の処理を呼ばれ処理しきれずフリーズやクラッシュするより、終わるまで少し停止してくれた方が端末に優しいと思いませんか?
19
19
  なので`Update`が存在していると思います。
20
20
 
21
21
  **FixedUpdateの呼び出し回数設定**

4

文言修正

2021/04/04 11:23

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -15,7 +15,8 @@
15
15
  `FixedUpdate`は`Update`とまったく違います。`Update`は期待するFPS(`Application.targetFrameRate`)に達するまで出来る限り呼んでくれます。
16
16
  `FixedUpdate`はProject Settingsで決めた一定間隔で呼ばれるものです。
17
17
 
18
- それなら一定間隔で呼ばれる`FixedUpdate`で処理すれば良いと思うかもしれませんが、処理落ちした次のフレームで更に処理落ちしそうな処理を呼ばれるより、処理が終わるまで少し停止した方が端末に優しいので`Update`が存在していると思います。
18
+ それなら一定間隔で呼ばれる`FixedUpdate`で処理すれば良いと思うかもしれませんが、処理落ちした次のフレームでまた別の処理を呼ばれる処理しきれないより、終わるまで少し停止してくれた方が端末に優しいと思いませんか?
19
+ なので`Update`が存在していると思います。
19
20
 
20
21
  **FixedUpdateの呼び出し回数設定**
21
22
  初期値は0.02(FPSで言えば50)

3

追記

2021/04/04 11:19

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -24,6 +24,7 @@
24
24
 
25
25
  ### 溜め攻撃の実装
26
26
  溜め攻撃の実装を簡単に書いてみました。
27
+ 良ければ参考にしてみてください。
27
28
 
28
29
  ```C#
29
30
 
@@ -79,4 +80,26 @@
79
80
  }
80
81
  }
81
82
 
82
- ```
83
+ ```
84
+
85
+ [Unirx](https://github.com/neuecc/UniRx)を使う方法もあります。下記は長押し判定のみです。
86
+ もしUnirx使ってなければおすすめですよ。様々な場面で活躍します。
87
+
88
+ ```C#
89
+ void Start()
90
+ {
91
+ var mouseDownStream = this.UpdateAsObservable().Where(_ => Input.GetMouseButtonDown(0));
92
+ var mouseUpStream = this.UpdateAsObservable().Where(_ => Input.GetMouseButtonUp(0));
93
+
94
+ //長押しの判定
95
+ //マウスクリックされたら3秒後にOnNextを流す
96
+ mouseDownStream
97
+ .SelectMany(_ => Observable.Timer(TimeSpan.FromSeconds(3)))
98
+ //途中でMouseUpされたらストリームをリセット
99
+ .TakeUntil(mouseUpStream)
100
+ .RepeatUntilDestroy(this.gameObject)
101
+ .Subscribe(_ => Debug.Log("長押し"));
102
+
103
+ }
104
+ ```
105
+ [コードの参照元](https://gist.github.com/TORISOUP/cd905bdd4d9d5fc95365)

2

変更

2021/04/04 11:16

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -15,7 +15,7 @@
15
15
  `FixedUpdate`は`Update`とまったく違います。`Update`は期待するFPS(`Application.targetFrameRate`)に達するまで出来る限り呼んでくれます。
16
16
  `FixedUpdate`はProject Settingsで決めた一定間隔で呼ばれるものです。
17
17
 
18
- それなら一定間隔で呼ばれる`FixedUpdate`で処理すれば良いと思うかもしれませんが、処理落ちした次のフレームで更に処理落ちしそうな処理を呼ばれるより処理が終わるまで少し停止した方が端末に優しいので`Update`が存在していると思います。
18
+ それなら一定間隔で呼ばれる`FixedUpdate`で処理すれば良いと思うかもしれませんが、処理落ちした次のフレームで更に処理落ちしそうな処理を呼ばれるより処理が終わるまで少し停止した方が端末に優しいので`Update`が存在していると思います。
19
19
 
20
20
  **FixedUpdateの呼び出し回数設定**
21
21
  初期値は0.02(FPSで言えば50)

1

必要無い文言を削除

2021/04/04 11:09

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -6,20 +6,6 @@
6
6
 
7
7
  自前で実装する必要はほぼ無いというのが僕の印象ですが、不安な部分があるなら小さなテストシーンを作って期待する動作になるか検証すると良いと思います。
8
8
 
9
- **Time.timeScaleに影響するもの例**
10
- - Time.time、Time.deltaTime、Time.fixedDeltaTime
11
- - FixedUpdateの呼び出し回数
12
- - コルーチンのWaitForSecondsなど
13
- - AnimatorのUpdate ModeがUnscaled Timeでないもの
14
- など
15
-
16
- **Time.timeに影響しないもの例**
17
- - Time.unscaledDeltaTime
18
- - Time.fixedUnscaledDeltaTime
19
- - Updateの呼び出し回数
20
- など
21
-
22
-
23
9
  > Update関数内で判定を行うと処理落ちしたとき端末により動作に差がでるのではないか
24
10
  (時間系の処理はFixedUpdateに記載するべきでしょうか? ※FixedUpdateは常に一定のため)
25
11