回答編集履歴
9
言い回し
test
CHANGED
@@ -13,7 +13,6 @@
|
|
13
13
|
>PlayerでplayerInputを使って入力を受け取り、playerMovementのyPositionに代入して動かそうと思ったが、
|
14
14
|
>yPositionがprivateのため
|
15
15
|
|
16
|
-
これもとてつもなく重要です。
|
17
16
|
単一責任にするなら、Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionに代入してtransformを動かさないとな」と考えちゃダメです。
|
18
17
|
それは結局移動のロジックについて、Playerも責任持って関わっていることになるので、単一責任原則ではありません。
|
19
18
|
|
8
言い回し修正
test
CHANGED
@@ -14,8 +14,8 @@
|
|
14
14
|
>yPositionがprivateのため
|
15
15
|
|
16
16
|
これもとてつもなく重要です。
|
17
|
-
Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionに代入してtransformを動かさないとな」と
|
17
|
+
単一責任にするなら、Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionに代入してtransformを動かさないとな」と考えちゃダメです。
|
18
|
-
それは結局Player
|
18
|
+
それは結局移動のロジックについて、Playerも責任持って関わっていることになるので、単一責任原則ではありません。
|
19
19
|
|
20
20
|
```C#
|
21
21
|
public class Player : MonoBehaviour
|
7
言い回し修正
test
CHANGED
@@ -13,8 +13,8 @@
|
|
13
13
|
>PlayerでplayerInputを使って入力を受け取り、playerMovementのyPositionに代入して動かそうと思ったが、
|
14
14
|
>yPositionがprivateのため
|
15
15
|
|
16
|
-
|
16
|
+
これもとてつもなく重要です。
|
17
|
-
Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionを動かさないとな」とか
|
17
|
+
Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionに代入してtransformを動かさないとな」とか考えちゃダメです。
|
18
18
|
それは結局Playerが責任持って移動に関わっているので、責任分割できていないです。
|
19
19
|
|
20
20
|
```C#
|
6
言い回し
test
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
もうこれがとてつもなく重要なところです。
|
17
17
|
Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionを動かさないとな」とか知ってちゃダメです。
|
18
|
-
それは結局Playerが責任持って移動に関わっているので、
|
18
|
+
それは結局Playerが責任持って移動に関わっているので、責任分割できていないです。
|
19
19
|
|
20
20
|
```C#
|
21
21
|
public class Player : MonoBehaviour
|
5
言い回し修正
test
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
もうこれがとてつもなく重要なところです。
|
17
17
|
Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionを動かさないとな」とか知ってちゃダメです。
|
18
|
-
それは結局Player
|
18
|
+
それは結局Playerが責任持って移動に関わっているので、全然責任分割できていないです。
|
19
19
|
|
20
20
|
```C#
|
21
21
|
public class Player : MonoBehaviour
|
4
言い回し修正
test
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
|
16
16
|
もうこれがとてつもなく重要なところです。
|
17
17
|
Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionを動かさないとな」とか知ってちゃダメです。
|
18
|
+
それは結局Player自身が考えて責任持って移動しているので、全然責任分割できていないです。
|
18
19
|
|
19
20
|
```C#
|
20
21
|
public class Player : MonoBehaviour
|
3
言い回し修正
test
CHANGED
@@ -9,6 +9,12 @@
|
|
9
9
|
|
10
10
|
「いや、playerMovement.Move()とかplayerInput.GetInput()とか俺知らねぇんだけど!?」とお思いでしょうが、そこが一番のキモです。
|
11
11
|
Playerから見たとき、「中で何をやっているか知らないけど、やれって行ったらやってくれることは知ってる」みたいにするのが重要です。
|
12
|
+
|
13
|
+
>PlayerでplayerInputを使って入力を受け取り、playerMovementのyPositionに代入して動かそうと思ったが、
|
14
|
+
>yPositionがprivateのため
|
15
|
+
|
16
|
+
もうこれがとてつもなく重要なところです。
|
17
|
+
Playerは「playerMovementがyPositionを持っているから、移動するならこいつのyPositionを動かさないとな」とか知ってちゃダメです。
|
12
18
|
|
13
19
|
```C#
|
14
20
|
public class Player : MonoBehaviour
|
2
言い回し変更
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
playerMovement.Move(input)は、入ってきたvector3に沿って移動するメソッドです。
|
9
9
|
|
10
10
|
「いや、playerMovement.Move()とかplayerInput.GetInput()とか俺知らねぇんだけど!?」とお思いでしょうが、そこが一番のキモです。
|
11
|
-
「中で何をやっているか知らないけど、やれって行ったらやってくれることは知ってる」みたいにするのが重要です。
|
11
|
+
Playerから見たとき、「中で何をやっているか知らないけど、やれって行ったらやってくれることは知ってる」みたいにするのが重要です。
|
12
12
|
|
13
13
|
```C#
|
14
14
|
public class Player : MonoBehaviour
|
1
追記
test
CHANGED
@@ -1 +1,31 @@
|
|
1
1
|
教材を見ないと適用後コードの意図が分からないので適当なことしか言えませんが、とりあえず普通にpublicなメソッドとかプロパティを設定しないとどうしようもないと思います。
|
2
|
+
|
3
|
+
---
|
4
|
+
普通に書けば以下の感じのPlayerクラスだと、いい感じに単一責任原則です。(修正前のコードを見る限り、PlayerはPlayerAudioを知る必要すらありません。)
|
5
|
+
|
6
|
+
入力に関する責任も移動に関する責任もPlayer自体は持っていないので簡潔かつ何をやっているのか分かりやすいです。
|
7
|
+
playerInput.GetInput();はプレイヤーの入力をvector3で返してくれるメソッド、
|
8
|
+
playerMovement.Move(input)は、入ってきたvector3に沿って移動するメソッドです。
|
9
|
+
|
10
|
+
「いや、playerMovement.Move()とかplayerInput.GetInput()とか俺知らねぇんだけど!?」とお思いでしょうが、そこが一番のキモです。
|
11
|
+
「中で何をやっているか知らないけど、やれって行ったらやってくれることは知ってる」みたいにするのが重要です。
|
12
|
+
|
13
|
+
```C#
|
14
|
+
public class Player : MonoBehaviour
|
15
|
+
{
|
16
|
+
[SerializeField] private PlayerInput playerInput;
|
17
|
+
[SerializeField] private PlayerMovement playerMovement;
|
18
|
+
|
19
|
+
private void Start()
|
20
|
+
{
|
21
|
+
playerInput = GetComponent<PlayerInput>();
|
22
|
+
playerMovement = GetComponent<PlayerMovement>();
|
23
|
+
}
|
24
|
+
|
25
|
+
private void Update()
|
26
|
+
{
|
27
|
+
Vector3 input = playerInput.GetInput();
|
28
|
+
playerMovement.Move(input);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
```
|