例えばこんなようなメソッドがあったとします。
「引数 newIsA と isA を比較、異なる場合は代入し、その値に応じて処理をする」という感じのものです。
C#
1void ToggleIsA(bool newIsA) { 2 if (isA != newIsA) { 3 isA = newIsA; 4 5 if (isA) { 6 Debug.Log("Aになりました!"); 7 } else { 8 Debug.Log("Aではなくなりました!"); 9 } 10 } 11 12}
そしてこのメソッドを毎フレーム実行するとします。
例えば、レイが当たっている間は ToggleIsA(true); 、当たっていない間は ToggleIsA(false); を実行するとします。
これで期待する動作はするのですが、
レイが当たっている間、ずーっと ToggleIsA(true); が実行されているのが気持ち悪いので、
メソッドを呼ぶ部分にこのようなif分を追加します。
「レイが当たっているのに isA == false なら ToggleIsA(true); 、当たっていないのに isA == true なら ToggleIsA(false); 」という感じです。
C#
1//レイが当たっている間 2if (isA == false) { 3 ToggleIsA(true); 4} 5 6//レイが当たっていない間 7if (isA == true) { 8 ToggleIsA(false); 9}
でもそうすると、 ToggleIsAメソッド の、この部分が必要なくなります。
C#
1void ToggleIsA(bool newIsA) { 2 if (isA != newIsA) { //←◆◆◆ココ◆◆◆ 3 isA = newIsA; 4 5 if (isA) { 6 Debug.Log("Aになりました!"); 7 } else { 8 Debug.Log("Aではなくなりました!"); 9 } 10 } 11 12}
というような感じで、
要はif (isA != newIsA)
をどこに入れるべきなのかを悩んでおります。
選択肢としては、
0. メソッドを呼ぶ部分、メソッド内の両方に入れる
- メソッドを呼ぶ部分のみに入れる
- メソッド内のみに入れる
- そのほかのやり方?
私の今の感覚としては、先ほども書いた通り、3の場合は毎フレームToggleIsA(bool newIsA)
が実行されるのが気持ち悪く、また処理速度的な観点からも重くならないのかな?と思っているのですが、かと言ってメソッドを呼ぶ部分に必要、となると、「そのメソッドを使うときの決まり事」が増えて残念とも思います。
ご教授いただければ幸いです。
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/24 03:32
2021/06/24 03:46 編集