前回に引き続きプログラミング応用編として、Unityエディタの編集に関して学習していきたい。
リンク先のウェブサイトの記載と併せ、ポイント解説の翻訳を見比べてほしい:
http://catlikecoding.com/unity/tutorials/star
構造体(struct)を使用しないのはなんで?
Star.Pointが軽量でありデータは常に全てが必要であるため、構造体にすることでオブジェクトのオーバーヘッドを回避することは意味があるといえる。しかしUnityはカスタムの構造体の型をサポートしていない。だから格納したいものには、データをバンドルするクラスを使用せざるを得ない。
オブジェクトのオーバーヘッドやNullエラーの可能性が気になるのであればオフセットおよび色データを別の配列に保存することは可能である。しかし、その場合にはこれらの配列が同期していることを保証する必要がある。それも実現可能ではあるが、クラスにするアプローチがより簡単である。このデモで使用した理由はそのためである。
オーバーライド(override)は何をする?
オーバーライドは親クラスのメソッドを上書きするときに用いる手法。virtual定義されたメソッドのみオーバーライドできる。このデモのケースにおいてはUnityが型を正確に知らなくてもエディタのOnInspectorGUIメソッド呼び出しを行うことが出来る。
だとするとUnityのStartやUpdateイベントめせっどはoverideキーワードが必要なのだろうか。答えはNoでUnityは自らのイベントメソッドを機能させるためには別のアプローチをとっているためである。
じゃあOnInspectorGUIがUnityのイベントメソッドではないのはなんでだろうか?答えは分からないが何かが整合性ご取れていないかレガシーのコードなのであろう。
SerializedObjectって何?
クラスのSerializedObjectはUnityオブジェクトのラッパー(wrapper)あるいはプロキシとして機能する。ブラックボックスのように何が入っているか分からずともデータをオブジェクトから抽出するのに使用することが出来る。Unityインスペクタが自身で作成した何かに対してもデフォルトのインスペクタを表示できるのはこのためである。元に戻す機能も無償で付属する。
EditorGUILayout?って何?
クラスのEditorGUILayoutはUnityエディタで表示するための便利ユーティリティである。さまざまな描画を行うメソッドが含まれ、デモのケースではSerializedPropertyを描画するためのみにしようしている。
EditorGUIクラスも似たような便利ユーティリティであるが、この場合は自らGUIレイアウトを処理する必要が出てくる。
GUIContentって何?
GUIContentはラッパー(wrapper)オブジェクトでありテキスト、テクスチャ、ツールチップ(ToolTip)などラベルに使用するものが対象。
GUILayoutをEditorGUILayoutの代わりに使用するのはなんで?
ゲーム開発に普段使っているUnity GUIを使用するので問題ない。GUILayoutは基本的なラベルやボタンの機能を提供する一方でEditorGUILayoutはエディタ特有の入力フィールドなど保持している。
-----------
次回はいよいよ最後のまとめ!プログラミングのポイントを押さえて、Editorを使いたおそう!
Unity3Dの公式マニュアル翻訳やってる人がiPhone, Androidでのゲームアプリ開発について記事にしています。Unity3Dでの開発をメインにAsset Storeで入手できるNGUI, Playmakerや, Oculus Riftなど作者サイトからの英語情報を翻訳していきます
登録:
コメントの投稿 (Atom)
自己紹介
- gamesonytablet
- Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます
ページビューの合計
ゲーム開発記事の目次
過去7日間の人気投稿
-
Unity使っててプロジェクトをインポートするときなどに稀に Missing (Mono Script) などと表示されていることがある。 慣れている方なら「仕方ないな」といって手動で正しいスクリプト見つけて修正していくのだが、これをエディタ上で自動的に修正してくれるパッケー...
-
今回の投稿はアニメーションに何を使えば良いか、とのお話。皆さん、Unityのアニメーション機能はオマケのようなものと認識しつつも、実際に使う場面になったらBlenderでどこまでやったら良いか迷うのでは? Unityフォーラムからの回答を翻訳しました: http:/...
-
前回投稿に続いて「別スクリプトの変数やメソッドへの参照」についてUnity Gemsより紹介する: ------ http://unitygems.com/mistakes1/ October 15, 2012 別スクリプトの変数やメソッドへの参照 二つの...
ブログ アーカイブ
-
▼
2012
(141)
-
▼
9月
(32)
- Unity3.5.6+iOS6対応のMac環境について
- 【ちょっと息抜き】各国でのUnity情報源を調べる
- Unityプログラミング応用(エディタ編集)~その3
- Unityプログラミング応用(エディタ編集)~その2
- NGUI 2.2.xバージョンアップ時のUnityバージョンに注意
- Reflections EngineでUnityにリアルな光の反射を
- Unity 海外の活動:ヤングゲームデザイナーズ夏季教室
- 【ちょっと休憩】完成Unityゲームのコード行数
- Unity C#とJavascriptの主な違い
- NGUI 2.2.1
- NGUI 2.2.0の不具合情報に注意!!
- Unityプログラミング応用(エディタ編集)~その1
- Unity3D SQLiteを使用できるアセット
- NGUI 2.2.0
- NGUI ゲームのコンフィグを簡単保存!
- NGUI 【ちょっと息抜き】作者がiPadもってない!
- NGUI作者がこの半年間を振り返る
- Playmaker 覚えておきたい既知の不具合
- Unity コピー&ペーストを実現するには?
- Blender 初心者必見!ライティングの基本を学ぶ!
- Unity オブジェクトプールの作成 ~その2
- Unity オブジェクトプールの作成 ~その1
- Playmaker上級編 カスタムアクションのC#コード記載
- Unity Hangout最高!
- Playmakerで配列、ハッシュテーブル
- Playmaker サードパーティツール、アドオン
- NGUI画面サイズを取得する場合の注意
- 必ず役立つ!Unity Wikiの裏技・便利技18~その2
- 必ず役立つ!Unity Wikiの裏技・便利技18 ~その1
- NGUI 連続押下イベント
- NGUI Unity4 New GUIに対抗、大幅変更を予定?
- Blenderで宇宙からの地球を創る
-
▼
9月
(32)
0 件のコメント:
コメントを投稿