オブジェクト管理システムについて
オブジェクト管理システムについて
初めて投稿させていただきます。
https://qiita.com/hart_edsf/items/a64ce3d149b5490239fb
このページを参考にオブジェクト管理システムを作ろうと思うのですが、IObjectの派生クラスから他のIObjectの派生クラスへ参照する場合、どのような記述をする必要がありますか?
よろしければサンプルコードをいただけないでしょうか?
よろしくおねがいします。
https://qiita.com/hart_edsf/items/a64ce3d149b5490239fb
このページを参考にオブジェクト管理システムを作ろうと思うのですが、IObjectの派生クラスから他のIObjectの派生クラスへ参照する場合、どのような記述をする必要がありますか?
よろしければサンプルコードをいただけないでしょうか?
よろしくおねがいします。
Re: オブジェクト管理システムについて
ObjectManagerに引数を検索キーにしてIObjectのポインターを返すメンバー関数を用意すれば良いかと思います。
Re: オブジェクト管理システムについて
ご返答ありがとうございます!
これをObjectManagerで定義しました。
自分のC++の理解が浅くてよくわからないのですが、これをIObjectの派生クラスから呼び出す場合にはどのような記述が必要ですか?
std::shared_ptr<IObject> *FindIObject(std::string arg_ClassName)
{
for (auto obj : ObjList)
{
if(std::equal(obj->ClassName.begin(), obj->ClassName.end(), arg_ClassName.begin(), arg_ClassName.end()))
return &obj;
}
}
自分のC++の理解が浅くてよくわからないのですが、これをIObjectの派生クラスから呼び出す場合にはどのような記述が必要ですか?
Re: オブジェクト管理システムについて
元のQiitaの記事では、ObjectManager mgr;で定義されています。これはゲームの設計次第のところがあって、ただ一つの正解というものはないです。ゲームオブジェクトを全部管理する一つだけのObjectManagerでも良いですし、オブジェクトの種類ごとに用意してもよいです(plaeyer_mgr,enemy_mgr)。個人的には後者です。
Re: オブジェクト管理システムについて
>引数に渡すObjectManagerの実態はどのように派生クラスにもってくればいいでしょうか。
好みの問題だと思いますが、
自分はObjectManager自体もIObjectにして、ObjectManagerを管理するObjectManagerを許容する構造が好きですね。
この場合は元記事と同じようにWinMain関数にルートとなるObjectManagerを一個作り、後は各層で必要に応じて管理クラスを拡張できます。
好みの問題だと思いますが、
自分はObjectManager自体もIObjectにして、ObjectManagerを管理するObjectManagerを許容する構造が好きですね。
この場合は元記事と同じようにWinMain関数にルートとなるObjectManagerを一個作り、後は各層で必要に応じて管理クラスを拡張できます。
Re: オブジェクト管理システムについて
IObjectの派生クラスから別のIObjectの派生クラスの関数をよびだしたいです。usao さんが書きました:オフトピック目指すところ,というか,解決すべき事柄は何なのだろう?
プレイヤークラスから、エネミークラスの座標を取得するなどです。
Re: オブジェクト管理システムについて
ObjectManagerをプレイヤークラスで一つ、エネミークラスで一つ定義していくということですか?参照魚 さんが書きました:元のQiitaの記事では、ObjectManager mgr;で定義されています。これはゲームの設計次第のところがあって、ただ一つの正解というものはないです。ゲームオブジェクトを全部管理する一つだけのObjectManagerでも良いですし、オブジェクトの種類ごとに用意してもよいです(plaeyer_mgr,enemy_mgr)。個人的には後者です。
それだとすべて解決しそうです!
試したら報告させていただきます。
Re: オブジェクト管理システムについて
オフトピック
そのObjectManagerとかいうのは,要するに,
「update()だのdraw()だのをまとめてコールする役目の物」なんだと思うけど,
それ以外の事柄に関しては(ObjectManagerというのを間に介さずに)普通に書けばよいのでは…?
「update()だのdraw()だのをまとめてコールする役目の物」なんだと思うけど,
それ以外の事柄に関しては(ObjectManagerというのを間に介さずに)普通に書けばよいのでは…?