他人が作成したプログラムを最近見ていて、なんか Unity Answersをみていたら、わりと綺麗な回答があったので紹介してみたい:
--------------------
http://answers.unity3d.com/questions/233859/whats-the-use-of-abstract-classes-and-interfaces-i.html
Mar 30 2012 at 10:08 PM
質問
ヤッホー、最近、abstract クラスと interface について勉強していて、C#の文法は掴めた。でもゲーム開発でどう活用できるのかが自分だとよく分からないんだ。
実際に使用している場面を教えてもらえる?
回答
どもども!ゲーム開発での abstract クラスと interface が何か特別なものがあるわけじゃないよ。正しく使えば利便性の向上とシンプル化が図れるけど、必要でないのに徐々に複雑にしちゃうこともある。
abstract クラスや interface は似通っているけど、明確な違いもある。abstract クラスは実際に機能をもつことができて、その子クラスが利用することもできる。インタフェースはクラスの関数からみた規約みたいなもので機能そのものは持たないんだ。
自分が開発しているゲームでは、共通機能をもったアイテムが複数ある場合に abstract クラスを使用してるよ。まあ、共通機能がオブジェクトを作るまでに至らないような場合だけどね。例えば、 Weapon (武器)クラスにクロスボウやショットガンに共通する機能を持つけど、 Weapon クラスのインスタンスそのものは、それ自体では使う用途がない。こんな場合は abstract にする意味があるかもね。
インタフェースは共通性のないオブジェクトを共通の属性で参照したい場合に便利だよ。例えばかなり異なったクラスでも同じリストの中に放り込んで、ループさせることが出来る。具体的にはロボットやゲームアイテムの壷はゲームの中でまったく異なるオブジェクトだけど、両方とも Breakable (壊せる)インタフェースを実装していれば、壊せるという観点では同等のオブジェクトとみなすことができる。List Breakable を定義して、ゲーム中に壊すものを整理することだって出来る。
--------------------
なるほどねーー、プログラミングの入門書よりもスッキリ頭に入ってくる説明だなー。
自分の場合はチェスのゲームロジックをみてたときに、駒を abstract クラスにしていて共通で駒が動けない場所のルールを定義して、子クラスではポーンやクイーンがチェスのルール上で動けない場所を個別に定義していた。
何とはなしに、いろいろ引き出しのあるプログラミングは良いなぁーと素朴におもったり。
どんどんゲーム作っていこうぜ!
Unity3Dの公式マニュアル翻訳やってる人がiPhone, Androidでのゲームアプリ開発について記事にしています。Unity3Dでの開発をメインにAsset Storeで入手できるNGUI, Playmakerや, Oculus Riftなど作者サイトからの英語情報を翻訳していきます
登録:
コメントの投稿 (Atom)
自己紹介
- gamesonytablet
- Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます
ページビューの合計
ゲーム開発記事の目次
過去7日間の人気投稿
-
Unity使っててプロジェクトをインポートするときなどに稀に Missing (Mono Script) などと表示されていることがある。 慣れている方なら「仕方ないな」といって手動で正しいスクリプト見つけて修正していくのだが、これをエディタ上で自動的に修正してくれるパッケー...
-
今回は Unify Community で紹介されている Tips からカレントディレクトリの変更に関する Tips を紹介したい: http://wiki.unity3d.com/index.php/Tip_of_the_day Feb 2013 Tip #5...
-
前回記事に引き続いてCharacter Controllerの正しい使い方についてUnity Gemsからの翻訳を投稿する: ------- http://unitygems.com/mistakes1/ October 15, 2012 Character ...
ブログ アーカイブ
-
▼
2013
(138)
-
▼
4月
(13)
- このグラフィックスがUnityに・・・来る??
- スーファミ時代の16 bitサウンド再現
- 【動画】ヘッドマウントデバイスを使ったバーチャルリアリティ
- NGUI 2.6.0 - Pro版のみUnity 4ダイナミックフォントサポート!!
- Unity創業者が自社ゲームの開発ブログを開始
- 【一見の価値あり】高品質なシェーダパックが登場
- 【すぐ分かる!】ゲーム開発でのabstractクラスとinterface
- TNet 1.6.9
- MineCraft作者が語る今後のゲーム業界
- 【朗報】UnityのTNet アセットでスマートフォン端末間のBluetooth接続がロードマップに!!
- NGUI 2.5.1, TNet 1.6.8
- NGUIビデオチュートリアル(2.5.0対応で最新化!!)
- Unityでの初期化、更新Tips(Awake, LateUpdate)
-
▼
4月
(13)
0 件のコメント:
コメントを投稿