回答編集履歴
9
修正
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
|
-
|
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
書き方変更
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
|
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
|
47
|
+
https://www.amazon.co.jp/dp/B09Y1MWK9N
|
48
48
|
|
49
49
|
まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めてインスペクタでセリフいじれると調整のとき楽できそうですね。
|
7
参考文献追加
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
言い回し変更
test
CHANGED
@@ -44,4 +44,4 @@
|
|
44
44
|
・良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方
|
45
45
|
https://www.amazon.co.jp/dp/B09Y1MWK9N (6章 条件分岐 迷宮化した条件分岐を解きほぐす技法)
|
46
46
|
|
47
|
-
まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めて
|
47
|
+
まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めてインスペクタでセリフいじれると調整のとき楽できそうですね。
|
5
追記
test
CHANGED
@@ -44,3 +44,4 @@
|
|
44
44
|
・良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方
|
45
45
|
https://www.amazon.co.jp/dp/B09Y1MWK9N (6章 条件分岐 迷宮化した条件分岐を解きほぐす技法)
|
46
46
|
|
47
|
+
まーこれだとコードにセリフ直書きでアレなんで、ScriptableObjectなんか絡めてAssetとしてインスペクタでセリフいじれると使いやすそうですよね。
|
4
言い回し変更
test
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
}
|
34
34
|
```
|
35
35
|
的な。
|
36
|
-
これだったら**戦闘のコードに50個も
|
36
|
+
これだったら**戦闘のコードに50個もフラグ確認分岐仕込む必要ない**ですし、後からセリフ足したくなってもIExtraMessage持たせたクラス作るだけです。
|
37
37
|
僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
|
38
38
|
参考は以下あたりで
|
39
39
|
|
3
言い回し変更
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
言い回し変更
test
CHANGED
@@ -33,6 +33,7 @@
|
|
33
33
|
}
|
34
34
|
```
|
35
35
|
的な。
|
36
|
+
これだったら戦闘のコードに50個も条件分岐仕込む必要ないですし、後からセリフ足したくなってもIExtraMessage持たせたクラス作るだけです。
|
36
37
|
僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
|
37
38
|
参考は以下あたりで
|
38
39
|
|
1
言い回し変更
test
CHANGED
@@ -1,4 +1,38 @@
|
|
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
|
+
的な。
|
2
36
|
僕もきちんと理解しきれてないんでアレですけど、ポリモーフィズム?ってやつですね。
|
3
37
|
参考は以下あたりで
|
4
38
|
|