このエディタをさらにカスタマイズすることが出来る。ただしそのための作法(プログラミング方法)を学ぶ必要がある。
なぜそこまで手を入れる必要があるのか?答えは簡単で、「さらに楽をするため」である。Inspector上でスクリプトがおもいのままに変数をリアルタイム編集できると、何度もプログラムを実行する必要がなくなる。
プログラミング応用編として、過去に紹介したウェブサイトの内容が非常に優れており、そこに書かれているポイント箇所を翻訳する形で学習を進めていきたい。併せてリンク先を参照いただきながらみていってほしい:
http://catlikecoding.com/unity/tutorials/star
メッシュ(Mesh)って何?
概念的にはメッシュはグラフィックスのハードウェアにより用いられる構造体であり複雑な描画に活用される。三次元空間の点の集合と三角形(基本的な二次元形状)から定義される。三角形はメッシュが表現しようとしている物体の表面を構成する。物体そのものはリアルに描かれるため実際には三角形の集合をみていることに気づかないほどだ。
クラスの属性って何?
クラスの属性はクラスにつけられるタグのようなもので、Unityがクラスをどう扱うか変更することができる。デモのケースではUnityに必要なコンポーネントがあるか確認させていて、このコンポーネントを追加するゲームオブジェクトに必要なコンポーネントが揃っていることを保証する。
typeofはどう使う?
演算子typeofによりクラス等の型オブジェクトを取得する。変数に対して使用することはできず、明示的な型名でしか使用できない。
クラス名をそのまま使用しない理由は明確でコンパイルエラーになってしまうためだ。あえてクラス名をそのまま使用しないのは型を変数に変換する必要があるためだ。
forループの変則的な使用法は?
for構文のなかで、複数のステートメントを反復宣言に入れて増分させることが可能。変則的な点はコンマで反復、増分それぞれの箇所に記入する必要がある点だ。
for(int iA = 0, iB = 0; iA < 10; iA++, iB++) { DoStuff(iA, iB); } と同等の記入方法は int iA = 0, iB = 0; while(iA < 10) { DoStuff(iA, iB); iA++; iB++ }
CGPROGRAMは何をする?
Unityエンジンからグラフィックカードにデータフローがあり、頂点ごとに処理される。次に頂点間の補間データが個々の頂点から個別のピクセルの描画までのデータフローの処理がある。デモのケースではポジションおよび色データのデータフローが処理される。このケースではさらに、頂点のポジションをワールド座標からスクリーン座標に変換するという点が追加処理となる。
CGPROGRAM文の上にある構文はデフォルトのライティング、Zバッファともにオフにする命令文である。カリングもオフにしているため三角形の両面(正面のみならず)を見ることが出来る。Blend SrcAlpha OneMinusSrcAlphaはデフォルトのアルファブレンドであり、透明を扱うことが出来る。
固定機能シェーダがないのはなんで?
固定機能シェーダは現在では使用されていない。またCGPROGRAMを使うことでUnityのスクリーンピクセルの変換が明示的になる。
Nullとサイズの両方をチェックするのはなんで?
新規作成されたとき、スターのコンポーネントはまだ配列がない。技術的にも配列を後でNullに設定することも可能である。エラーを未然に防ぐためにもその点は良く注意しておく必要がある。配列が存在する場合だけサイズをチェックする必要がある。
--------
繰り返しになるがリンク先ではエディタのプログラミングがより詳細が書かれており、ステップごとに丁寧に画面操作が一から書かれているので時間ある際に必ず併せて見てほしい。
次回も引き続きエディタのプログラミングについてみていきます!
0 件のコメント:
コメントを投稿