回答編集履歴

9

修正

2022/06/13 06:03

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -1,49 +1 @@
1
- フラグ管理は外でやってんですよね?
2
- だったら特殊セリフをクラスとしてinterface化して、フラグ経ったときに対応した特殊セリフクラスをプレイヤーに持たせて、戦闘のときにそれ持ってたらメッセージ表示メソッドを実行するとかどうですかね。
3
-
4
- ```C#
5
- // interface
6
- public interface IExtraMessage
7
- {
8
- public void ShowExtraMessage();
9
- }
10
-
11
- // 例えば
12
- public class TodomeSasuze : IExtraMessage
13
- {
14
- public void ShowExtraMessage()
15
- {
16
- Debug.Log("これでトドメだ!");
17
- }
18
- }
19
-
20
- // 戦闘
21
- public class Player : MonoBehaviour
22
- {
23
- public IExtraMessage extraMessage;
24
-
25
- public void Attack
26
- {
27
- // もしIExtraMessageを持ってたら
28
- if (extraMessage != null)
29
- {
30
- extraMessage.ShowExtraMessage();
31
- }
32
- }
33
- }
34
- ```
35
- 的な。
36
- これだったら**戦闘のコードに50個もフラグ確認分岐仕込む必要ない**ですし、後からセリフ足したくなってもIExtraMessage持たせたクラス作るだけです。
37
- 僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
38
- 参考は以下あたりで
39
-
40
- ・if か知らなあなたためのポリモーフィズム入門(6章以降)
1
+ ちょっと質問内容勘違いてたっぽいので回答修正します。
41
- https://zenn.dev/kuramapommel/books/introduce_polymorphism/viewer/chapter6
42
- ・ポリモーフィズムを活用するとなぜ if や switch が消えるのか?
43
- https://qiita.com/Nossa/items/a93024e653ff939115c6
44
- ・ポケモンで学ぶ!クラスとオブジェクト指向(4章 継承とポリモーフィズム)
45
- https://zenn.dev/m_coder/books/oop-learning-with-pokemon/viewer/inherit
46
- ・良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方(6章 条件分岐 迷宮化した条件分岐を解きほぐす技法)
47
- https://www.amazon.co.jp/dp/B09Y1MWK9N
48
-
49
- まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めてインスペクタでセリフいじれると調整のとき楽できそうですね。

8

書き方変更

2022/06/13 05:54

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -37,13 +37,13 @@
37
37
  僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
38
38
  参考は以下あたりで
39
39
 
40
- ・if しか知らないあなたのためのポリモーフィズム入門
40
+ ・if しか知らないあなたのためのポリモーフィズム入門(6章以降)
41
- https://zenn.dev/kuramapommel/books/introduce_polymorphism/viewer/chapter6 (特に6章以降)
41
+ https://zenn.dev/kuramapommel/books/introduce_polymorphism/viewer/chapter6
42
42
  ・ポリモーフィズムを活用するとなぜ if や switch が消えるのか?
43
43
  https://qiita.com/Nossa/items/a93024e653ff939115c6
44
- ・ポケモンで学ぶ!クラスとオブジェクト指向
44
+ ・ポケモンで学ぶ!クラスとオブジェクト指向(4章 継承とポリモーフィズム)
45
- https://zenn.dev/m_coder/books/oop-learning-with-pokemon/viewer/inherit (継承とポリモーフィズム)
45
+ https://zenn.dev/m_coder/books/oop-learning-with-pokemon/viewer/inherit
46
- ・良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方
46
+ ・良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方(6章 条件分岐 迷宮化した条件分岐を解きほぐす技法)
47
- https://www.amazon.co.jp/dp/B09Y1MWK9N (6章 条件分岐 迷宮化した条件分岐を解きほぐす技法)
47
+ https://www.amazon.co.jp/dp/B09Y1MWK9N
48
48
 
49
49
  まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めてインスペクタでセリフいじれると調整のとき楽できそうですね。

7

参考文献追加

2022/06/13 05:53

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -41,6 +41,8 @@
41
41
  https://zenn.dev/kuramapommel/books/introduce_polymorphism/viewer/chapter6 (特に6章以降)
42
42
  ・ポリモーフィズムを活用するとなぜ if や switch が消えるのか?
43
43
  https://qiita.com/Nossa/items/a93024e653ff939115c6
44
+ ・ポケモンで学ぶ!クラスとオブジェクト指向
45
+ https://zenn.dev/m_coder/books/oop-learning-with-pokemon/viewer/inherit (継承とポリモーフィズム)
44
46
  ・良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方
45
47
  https://www.amazon.co.jp/dp/B09Y1MWK9N (6章 条件分岐 迷宮化した条件分岐を解きほぐす技法)
46
48
 

6

言い回し変更

2022/06/13 05:46

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -44,4 +44,4 @@
44
44
  ・良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方
45
45
  https://www.amazon.co.jp/dp/B09Y1MWK9N (6章 条件分岐 迷宮化した条件分岐を解きほぐす技法)
46
46
 
47
- まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めてAssetとしてインスペクタでセリフいじれると使いやすそうですね。
47
+ まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めてインスペクタでセリフいじれると調整のとき楽できそうですね。

5

追記

2022/06/13 05:45

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -44,3 +44,4 @@
44
44
  ・良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方
45
45
  https://www.amazon.co.jp/dp/B09Y1MWK9N (6章 条件分岐 迷宮化した条件分岐を解きほぐす技法)
46
46
 
47
+ まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めてAssetとしてインスペクタでセリフいじれると使いやすそうですよね。

4

言い回し変更

2022/06/13 04:59

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -33,7 +33,7 @@
33
33
  }
34
34
  ```
35
35
  的な。
36
- これだったら**戦闘のコードに50個も条件分岐仕込む必要ない**ですし、後からセリフ足したくなってもIExtraMessage持たせたクラス作るだけです。
36
+ これだったら**戦闘のコードに50個もフラグ確認分岐仕込む必要ない**ですし、後からセリフ足したくなってもIExtraMessage持たせたクラス作るだけです。
37
37
  僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
38
38
  参考は以下あたりで
39
39
 

3

言い回し変更

2022/06/13 04:51

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -33,7 +33,7 @@
33
33
  }
34
34
  ```
35
35
  的な。
36
- これだったら戦闘のコードに50個も条件分岐仕込む必要ないですし、後からセリフ足したくなってもIExtraMessage持たせたクラス作るだけです。
36
+ これだったら**戦闘のコードに50個も条件分岐仕込む必要ない**ですし、後からセリフ足したくなってもIExtraMessage持たせたクラス作るだけです。
37
37
  僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
38
38
  参考は以下あたりで
39
39
 

2

言い回し変更

2022/06/13 04:50

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -33,6 +33,7 @@
33
33
  }
34
34
  ```
35
35
  的な。
36
+ これだったら戦闘のコードに50個も条件分岐仕込む必要ないですし、後からセリフ足したくなってもIExtraMessage持たせたクラス作るだけです。
36
37
  僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
37
38
  参考は以下あたりで
38
39
 

1

言い回し変更

2022/06/13 04:43

投稿

UnchFullburst
UnchFullburst

スコア663

test CHANGED
@@ -1,4 +1,38 @@
1
+ フラグ管理は外でやってんですよね?
1
- 特殊セリフクラスinterface化して、フラグ経ったときにそれプレイヤーに持たせて、戦闘のときに特殊セリフクラス持ってたらその中のメッセージ表示を実行するとかどうですかね。
2
+ だったら特殊セリフクラスとしてinterface化して、フラグ経ったときに対応した特殊セリフクラスをプレイヤーに持たせて、戦闘のときにそれ持ってたらメッセージ表示メソッドを実行するとかどうですかね。
3
+
4
+ ```C#
5
+ // interface
6
+ public interface IExtraMessage
7
+ {
8
+ public void ShowExtraMessage();
9
+ }
10
+
11
+ // 例えば
12
+ public class TodomeSasuze : IExtraMessage
13
+ {
14
+ public void ShowExtraMessage()
15
+ {
16
+ Debug.Log("これでトドメだ!");
17
+ }
18
+ }
19
+
20
+ // 戦闘
21
+ public class Player : MonoBehaviour
22
+ {
23
+ public IExtraMessage extraMessage;
24
+
25
+ public void Attack
26
+ {
27
+ // もしIExtraMessageを持ってたら
28
+ if (extraMessage != null)
29
+ {
30
+ extraMessage.ShowExtraMessage();
31
+ }
32
+ }
33
+ }
34
+ ```
35
+ 的な。
2
36
  僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
3
37
  参考は以下あたりで
4
38