私は、MickWestの記事「EvolveYourHierarchy」に沿って、Objective-Cを使用して単純なコンポーネントベースのゲームオブジェクトアーキテクチャを実装しようとしています。この目的のために、Mike Ashによる「Objective-Cメッセージ転送」の記事で概説されているように、つまり-(id)forwardingTargetForSelector:
メソッドを使用して、いくつかのアイデアをうまく使用しました。
基本的な設定は、コンテナGameObjectクラスがあり、インスタンス変数としてコンポーネントクラスの3つのインスタンス(GCPositioning、GCRigidBody、およびGCRendering)が含まれていることです。メソッドは、メソッド-(id)forwardingTargetForSelector:
を使用して決定された、関連するセレクターに応答するコンポーネントを返します-(BOOL)respondsToSelector:
。
これはすべて、ある意味で魅力のように機能します。実装がコンポーネントの1つにあるGameObjectインスタンスのメソッドを呼び出すことができ、それが機能します。もちろん、問題は、コンパイラが各呼び出しに対して「応答しない可能性がある」という警告を出すことです。さて、私の質問は、どうすればこれを回避できるかということです。特に、GameObjectの各インスタンスが異なるコンポーネントのセットを持つという事実に関してはどうでしょうか。たぶん、オブジェクトごとに、コンテナオブジェクトにメソッドを登録する方法はありますか?たとえば、ある種の-(void)registerMethodWithGameObject:
メソッドを作成できますか?それをどのように行うのですか?
さて、私がCocoaとObjective-Cにかなり慣れていないことは明らかかもしれませんし、そうでないかもしれません。もちろん、私の特定の問題の解決策を知りたいのですが、これを行うためのよりエレガントな方法を説明したいと思う人は、さらに大歓迎です。
よろしくお願いします、-Bastiaan