質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

デザインパターン

デザインパターンは、ソフトウェアのデザインでよく起きる問題に対して、解決策をノウハウとして蓄積し再利用出来るようにした設計パターンを指します。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2935閲覧

UniRxを使うべきポイントとデザインパターン

gozi

総合スコア17

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

デザインパターン

デザインパターンは、ソフトウェアのデザインでよく起きる問題に対して、解決策をノウハウとして蓄積し再利用出来るようにした設計パターンを指します。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

2グッド

1クリップ

投稿2018/04/07 11:17

UniRxとデザインパターンついての質問です。

現在Unity(C#)を用いてゲーム開発をしており、Stateパターンを主に使って制作していました。(ゲームの内容はターン制のゲーム。)
しかし、UniRxを使った制作に切り替えようと思い、適した処理にはUniRxを使った書き方に直したのですが、UniRxはObserverパターンであり、Stateパターンを主軸にしていたこともあり、よく避けたほうが良いと耳にするパターンの乱用が起こってしまっているのではないかと感じ、質問させていただくに至りました。

具体的には移動処理とメニュー画面を表示させる処理でパターンを併用しています。
移動処理にはenum型で状態を持たせ、自分のターンでなおかつ移動可能状態であれば、移動が割り当てられているキーを押したら移動するというものです。(Stateパターン)
メニュー画面の表示はキーが押されたときにそのキーがメニュー画面を表示する者であればメニューを表示するというものです。(Observerパターン)

現在は学校に通っており、web系の教員に話を聞いたら、移動処理などの絶対に行われるであろう処理に使うのは不自然だと言われました。処理速度の計測は行っていないのですが、よく行われるものを監視し続けるのは確かに無駄が多いのかなと感じています。
非常に便利だと感じているので、UniRxは使っていこうと考えており、乱用を避けることを考えると適してないであろう移動処理をObserverパターンで書き直すということになってしまいます。

質問内容をまとめると2点あり、移動処理などの行われやすい処理にはパターンが乱立してもOvserverパターンを使わないべきなのかということが1つです。
(ゲーム内での'移動'は毎ターン必ず行われるという事はない。しかし移動なくしてクリアは不可能であり、いずれは必ず呼ばれるであろう想定)

2つ目はどの程度なら異なったパターンを併用しても良いのかという点です
同じスクリプト内に無かったらよいというものなのか、まったく異なったものがあってはならないというものなのか、はたまた、処理によって変えているのであれば問題ではないのか等、程度を教えていただきたいです。
どうぞよろしくお願いいたします。

Bongo, capra314cabra👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ゲーム開発には疎いですが、デザインパターンの話しとして投稿させてください。

デザインパターンを適用して書き手にも読み手にもわかりやすくなるならいいのではないでしょうか。
パターンを意識しすぎて逆に読みづらくなったときに乱用と言えるのだと思います。

強引な例ですが、 IEnumerable や IDisposable もデザインパターンの一つですがコードの中で両立してますよね?

投稿2018/04/09 10:07

gaya-K

総合スコア449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gozi

2018/04/10 10:33

なるほど、ちゃんと理由があっての仕様なので、読みやくなってると自負してるので、使っていこうと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問