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

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

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

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

Q&A

解決済

1回答

7217閲覧

UnityでGameObjectが継承できない → プレイヤーや敵のクラス概念が作れない?

yrema

総合スコア286

Unity

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

0グッド

0クリップ

投稿2018/04/10 16:57

public class Character : GameObject
としてメンバにHPやMPを持ち、
public class Player : Character
public class NonPlayerCharacter : Character
など継承して開発しようと計画してたのですが、
GameObjectがsealedなので継承できないと分かりました。

じゃあGameObjectをメンバに持つCharacterクラスを作成すれば・・・と思ったのですが、
HierarchyにはGameObjectしか存在できない(未確認)ため、FindでGameObjectを検索できたとしても、
それを持つCharacterインスタンスにアクセスできないと気づきました。

ここでそもそも上のような考え方で構築するのは間違いなのでは?と思いました。
一般的にプレイヤーや敵やHP・MPなどはどのようにクラス構成で作られているものなのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

Unityはコンポーネント指向のゲームエンジンです。
なので、継承で表現するのではなく、GameObjectに対して様々なコンポーネントを追加してプレイヤーや敵を表現、構築していきます。

とはいえ、オブジェクト指向でもあるので、「継承」を利用するケースは「MonoBehaviour」クラスがそれに近い位置づけです。
MonoBehaviourクラスがGameObjectにアタッチできるクラスとなっています。

基本はこれを継承し、GameObjectにアタッチできるクラスとして実装し、このクラスを継承して派生クラスを作ることで継承を利用した構築が可能です。

ざっくりとしたイメージで言えば、裸のプレイヤーに服や武器などを装備させていってひとつのプレイヤーキャラを表現する、みたいな感じですね。

分かりやすい例としてCubeオブジェクトをシーンに配置してみると分かると思います。
ポリゴンなどの情報はMeshFilterのメッシュプロパティが、画面に表示されるようにする「レンダリング部分」を担当するのがMeshRendererです。

Cubeひとつをとっても、こうしたいくつかのコンポーネントが連携しあいながら形を作っています。

Unityのコンポーネントについて学んでみると色々と見えてくると思いますよ。

投稿2018/04/10 17:38

edo_m18

総合スコア2283

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

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

yrema

2018/04/10 18:27

なるほど。プレイヤーコンポーネントとか敵コンポーネントとかをアタッチするということですね。ありがとうございます!
edo_m18

2018/04/11 00:48

そうですね。そんなイメージです。 あとUnityにはPrefabという仕組みがあって、GameObjectについたコンポーネントや子要素を持つ階層構造自体をシリアライズしてファイルに保存する仕組みがあります。 Prefabは動的にインスタンス化できるので、例えば「銃」の仕組み(マウスクリックで銃を発射とか)を持つオブジェクトをPrefabにしておいて、プレイヤーが装備したらそれをインスタンス化して使う、などもできるので、合わせてPrefabも調べてみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問