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

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

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

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

Unity

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

Q&A

解決済

2回答

3800閲覧

Unity C# スキルの実装

gozi

総合スコア17

C#

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

Unity

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

1グッド

0クリップ

投稿2019/06/18 14:06

スキルの実装で戸惑ってます。
3Dアクションゲームのスキルで、パッシブスキル、アクティブスキルがあり、攻撃スキルやバフ・デバフ、ヘイトを集めるものなんかもあります。

delegateとFactoryで試作してみたのですが、スキルによって必要な引数が違っていたりすると汎用性が低く賄えなくなってしまいます(ヘイトなんかは顕著で、座標が必要だったり…)
組んでみたものをみて、拡張性であったりがダメダメで1からの作り直しを考えているので、コードはあえてなしで、どのような手法があるのかを重視しての質問とさせていただきます。

特別にdelegateやFactoryにこだわっているという事はないので、スキルの実装ならこれが良いよなどあればそれを教えていただけたらと思います。

拡張性や柔軟性を意識しており、外部から簡単に追加、変更ができるようにしたいと考えています。
外部ファイルはLuaが分かるのでそれでできるものだと非常に助かります。

mamk👍を押しています

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

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

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

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

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

y_waiwai

2019/06/18 15:52

質問が意味不明です スキルとはなんでしょう。 ヘイトとはなんでしょう。 これらの用語の定義を提示してください
gozi

2019/06/19 01:19

申し訳ございません。 3Dアクションゲーム、スキルの実装。というと全く同じとか行かないものの同じようなやり方で皆実装されているものかと思い抽象的な質問とさせていただいています。 仮にそうでなく、本当に全然違うやり方であったとしても、その中から取捨選択することができるのでそれはそれでとてもためになると考えています。 なので、どのような手法がるのか。ということに重視してと明記してあります。 あまりここを使わせていただくことがないので、あまりわかっていないのですが、unity,3Dゲーム,スキル(アクティブなど、バフデバフなど想像できるように明記)とあるのに意味が分からないということはあるのでしょうか? 単に不十分であるからもう少し分かりやすくしたほうが良いというものの揶揄でしょうか?
y_waiwai

2019/06/19 01:25

「unity 3Dゲーム スキル」でぐぐって、あなたの思うような意味合いの記事はどれだけ見つかるでしょうか。 まあ、言葉の意味がどーこーという話にはしたくないですが、単純に意味不明だ、ってことです。
gozi

2019/06/19 01:54

いくらでも出てきますが、詳しくやっているものがなく、互換がうまくできていないという状況です。 スキルを実装するのが初めてなのでゲームによって違いがそこまであるのかが分かっていません。 あなたはゲーム制作をしたことがありますか?それでスキルの実装をしたことが、またその部分を見たことがありますか?もしおありならそれを教えていただきたいです。 それがない、または教えたくないというのであれば、至極真っ当ですがここに来る必要はありませんし、来ていただく必要もありません。
y_waiwai

2019/06/19 02:10

うーん、ウチで出てくるのはおそらくこれじゃないかというのは1件だけで、あとは、プログラマの技能のスキルの話ばかりなので、まあ、見てるものが違うんでしょう。 ということで、私にとって意味不明な質問である、ってことには変わりはないし、これについての説明もないので、この件は触らないようにしときますです
gozi

2019/06/19 05:37

そうですね、わかっていないのでどれを見ればいい設計ができるのかが分かっていない状態です。 すきるを作ろう!→"スキル 作る"の記事を一通り漁った。が今の状態で情報の取捨選択ができていないです。
guest

回答2

0

ベストアンサー

スキルというのが非常に広い概念なので、画一的に扱うのは不可能です。

例えば「人の話を聞くことのできるスキル」と「敵を二回攻撃できるスキル」と「敵の攻撃を一回だけ無効にできるスキル」では、呼ばれる場面もタイミングも違います。

このような場合は、キャラクターに「そのスキルを持っている」という情報と「スキル毎の拡張情報」を持たせ、スキルを使用するタイミングで「このキャラクターがこのスキルを持っていれば」と分岐するしかありません。

スキルの情報自体はクラスを作ってそのインスタンスをキャラクターのプロパティに持たせるのが良いと思います。

非常にざっくりした質問なので、回答もざっくりしたものになるのは仕方がないと諦めてください。

投稿2019/06/19 02:46

Zuishin

総合スコア28660

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

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

gozi

2019/06/19 05:38 編集

実装。としたのが良くなかったかもしれません。 広い概念なので画一的に扱うのは不可能。ということがわかったので非常に満足です。 場面もタイミングも違うものを一緒にまとめてその中から、持っている情報と見比べて選ぼう。基は"スキル"というものであるから何とか1つにまとめてしまいたいと躍起にやっていました。 ざっくりした質問だったのでざっくりとした回答で何ら問題ありません。 ありがとうございました!
guest

0

どのような引数がありますか?
スキルの種類と必要な引数や存在するパラメータを列挙してください。

投稿2019/06/18 23:51

naby

総合スコア126

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

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

gozi

2019/06/19 01:27

これこれこういう素材があるからどうしましょう?というものではなく、多種多様なスキルがあり、拡張性を重視した設計にするにはどうしますか?という質問でした。 "Unity スキル実装"で調べると簡単なFactoryを用いたものがHitするのですが、簡単なものであるゆえに呼ばれるメソッドの引数がなく、呼んだらログを表示するものになっています。 それをまねて作ってみたのですが、前述した通り引数有の想定ではなかったので、「では、想定される引数のもんを全て継承させるのか?」と考えた時に全部羅列するのはできなくないがよくない。と判断しました。 なので、やり方を一新するために、手法を重視しての質問とさせていただきました。 中途半端に情報を明示したために分かりにくくなってしまいました… 簡単なものではなく柔軟性も重視したいとの考えの基でした
stdio

2019/06/19 01:54

多種多様なスキルがあり、拡張性を重視した設計にするにはどうしますか?という質問ならそうだと言って下さい。 基本的に拡張性を付ける場合はしっかりとしたクラスの設計とゲームの仕様の上に成り立つものなので、まずはそこから勉強しましょう。ゲームの方向性があいまい、クラスの設計もめちゃめちゃでは、拡張性なんてものは夢のまた夢です。ごり押しで何とか頑張って下さいとしか言えません。
gozi

2019/06/19 05:31

余計な情報は邪魔になる。ということでしょうか? 少し明瞭なほうが分かりやすいと思ってのことでした。 スキルの種類を言ったことから多種多様なことは分かると思うし、拡張性のことも言ってあるので…。 何故クラス設計の話になるのかが理解できません。設計の情報は載せてないはずですが…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問