Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

2012-08-01から1ヶ月間の記事一覧

スクリプトを管理する

現在のプロジェクトにあるスクリプトファイルのリストは、Component-Scripts で見ることができる。 しかし、スクリプトの数が増えてくると長いリストになって不便。そこで、スクリプトをカテゴリー分け(および呼び出し名を設定)する方法が、@script AddCom…

変数の命名規則

Unityの変数の命名規則は次が標準。 種類 規則 例 一般の変数 ローワーキャメル deltaTime キーワード 小文字 audio, transform.position 列挙型 大文字 UPPERCASE 関数 アッパーキャメル CountTime クラス アッパーキャメル EnemyBoss

スカイボックスとテライン、フォグを使う

1)テラインを作るTerrain Assetsのパッケージをインポートする。 すべてチェックの状態で"Import" プロジェクトビューに"New Terrain"ができる。これをヒエラルキービューにドラッグ シーンにテラインができる。テラインの調整はインスペクターウィンドウ…

ガーベッジコレクションを最適化する

参考:Optimizing with Unity iPhone, the first three things I’ll do… | Cratesmith Gameworks

TagとLayer

gameObjectにはTagとLayerを設定できる。 Tagは、主にGameObjectを特定する(名前の代わり)に使用する。 Layerは、主にRendering設定のグループ分けに使う。例えば、あるカメラで見える/見えない、あるライトで照らす/照らさない、等)次のように設定する1)…

MonoBehaviourを理解する

参考 Unity Script Reference – MonoBehaviour Unityのスクリプトはすべて、MonoBehaviourクラスの子クラスでなければならない。 javascriptの場合は明示的に指定しなくてもMonoBehaviourの子クラスになる。例えば、testScript.jsと言うスクリプトファイルを…

#pragmaを使う

#pragmaとは、コンパイラ固有の指定を行う手段として ISO/JIS/ANSI 規格で定められているもの。#pragma 文の構文はコンパイラによって異なる。Unityの場合、次の3つがある。 pragma strict - 動的型付けを不可にする pragma implicit - 型の暗黙宣言を可能…

高速化:キャッシュを使う

コンポーネントを処理するには、そのコンポーネントを探す時間がかかる。このため、何度も使うコンポーネントはキャッシュしておくとパフォーマンスが上がる。 例えば、次のようなスクリプトは、 function Update () { transform.Translate(0, 0, 5); ..... …

高速化:静的型付け

高速化の基本は、静的型付け。多くの場合は、Unityが自動的に型を決めてくれる。例えば、 var foo = 5;とすれば、fooはInteger型になる。もしfooをfloat型として扱いたい場合は、期待した計算ができない。 var sum2 = 0;// 自動的にInteger型になる sum2 += …

高速化:組み込み(ビルトイン)配列を使う

(Unity Script Reference – Array) 一般にスクリプトで配列を定義する際は、 var array = new Array (Vector3(0, 0, 0), Vector3(0, 0, 1));のようにする。これをjavascript配列と呼ぶ。値を指定しない場合のデフォルトは"null"になる。一方、ビルトイン配…

XBOX360コントローラを使う

まずInput Managerを使って、XBOX360コントローラの操作をアサインする。参考:Unity - InputEdit-Project Settings-Inputを選択 InspectorにInput Managerパネルが現れる。ここでキーや、ゲームコントローラーのボタン・スティックのアサインを行う。

First Person Controllerを使う

Assets-Import Package-Character Controller を選択 プロジェクトビュー内のStandard Packagesの中にCharacterControllerフォルダが作られる。これを開く。 First Person Controllerをヒエラルキービューに移動 シーンビュー上でFirst Person Controllerの…

連想配列(Hashtable)を使う

こちら(Unityでゲーム開発 -JavaScript:連想配列を使う方法-)を参照のこと。

XmlDocument()でXMLをパースする その2

XmlDocumentを使ったXMLパース方法の続き。Unity Noobs: XML - Loading data from a xml file.のスクリプトが良い参考になるので、これを解読してみる。サンプルのXMLは次。 <levels> <level> <name>Level 1 (xml)</name> <tutorial>Try comes close to all four objects. (xml)</tutorial> <object name="Cube"> Hi, I'm a cube! (</object></level></levels>…

XmlDocument()でXMLをパースする その1

以前、XMLParserを使ってXMLをパースする記事を書いたが(XMLParserを使う その1、XMLParserを使う その2)、テキストやアトリビュートの取り出し方が今ひとつわからなかった。そこで、別の方法---というよりこちらの方が正当なやり方かもしれないが---、.…

XMLParserを使う その2

XMLParserについての続き。(「その1」はこちら)。XMLNodeクラスには3つのメソッドが定義されている。 class XMLNode extends Boo.Lang.Hash{ function GetNodeList(path:String){ return GetObject(path) as XMLNodeList; } function GetNode(path:Strin…

変数の型を変換する

(1) Parse() メソッドを使う var num = float.Parse("123.456"); // numはfloat変数になる

外部ファイルへのパス

Unityでは外部ファイルへのアクセスがやや面倒。ややこしいので具体例で示す。以下、Mac環境です。まず現在のアプリケーションのパスは Application.dataPath で取得できる。ただし、実行環境でその値は異なる。(参考:Unity Script Reference – Applicatio…

水面を作る(Proのみ)

Assets-Import Package... - Water(Pro Only)を選択 すべてにチェックを入れて(デフォルトでそうなっている)、"Import"をクリック Projectビュー/Standard Assetsの下に、"Editor"と"Water(Pro Only)"を言うフォルダができる。 "Editor"と"Water(Pro Only)…

水面を作る

Assets-Import Package... - Water(Basic)を選択 すべてにチェックを入れて(デフォルトでそうなっている)、"Import"をクリック Projectビュー/Standard Assetsの下に、Water(Basic)を言うフォルダができる。 開くと Daylight Simple Water Nighttime Simpl…

パスについて

ローカルデータにアクセスするには、"file://"+絶対パスで記述する Macの場合、"file://ボリューム名/Users/...”となる。 "file://XOOMS14/Users/ay3844/Documents/_development/unity/trial/trial01/publish/data/pict01.jpg"; この例では"XOOMS14"がボリュ…

WWWクラスで外部ファイルを読みこむ

wwwクラスを使ってUnityで外部ファイルを読み込むことができる。http://images.earthcam.com/ec_metros/ourcams/fridays.jpgの画像ファイルを読み込む例。 #pragma strict var url = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg"; function …

ビルドする

File-Build Settings... を選択 ビルドするシーンを選択する。現在開いているシーンファイルを選択する場合は、"Add Current"をクリック 詳細設定は下部の"Player Setting..."をクリックし、Player Settingsウィンドウでパラメータを設定する。下の例では、C…

外部のテキストファイルを読み込む

外部テキストファイルを読み込むひとつの方法が、System.IOを使うもの。 【関連】 WWWを使う方法:WWWクラスで外部ファイルを読みこむ - Unityな日々(Unity Geek) Text Assetを使う方法:テキストファイル(TextAsset)からレイアウト情報を読み込む - 強火…

XMLParserを使う その1

Unity Scriptsの[Download UnityScript XML Parser:title=Unityscript XML Parserへのリンク]をクリックし、ZIPをダウンロードする。 解凍すると3つのjsスクリプトファイルができる。 これらをUnityのプロジェクトビューにドラッグ&ドロップ パースするス…

Lightmappingを使う

次のシーンに対してLightmappingを行う。 Windows-Lightmappingで、Lightmappingウィンドウを開く レイアウト内に埋め込むと便利 ヒエラルキービューでLightmapを焼き付けたいオブジェクトを選択し、Lightmappingビューで"Lightmap Static"にチェックを入れ…

オブジェクトに物理的な特性を加える(Rigidbody)

対象オブジェクトに、Rigidbody コンポーネントを付加する。 例えば、対象オブジェクトを一定速度で動かす場合、対象オブジェクトに次のスクリプトを付加。 秒速1mで上方向に移動する function Start () { rigidbody.velocity = Vector3.up; } function Upda…

オブジェクトのまわりを回転させる

transform.RotateAround()関数を使う。下の例では、targetオブジェクトのupベクター(Y軸)の周りを秒速45度でまわる。 第一引数のVector3.zeroはこのスクリプトがアタッチされるオブジェクトの回転基準点らしい。 var target:Transform; function Start () …

MonoDevelopの文字化けを修正する

UnityScriptのデフォルトエディタはMonoDevelopだが、インストール状態だと文字化けが生じる この修正方法は次の通り 参考:MacのMonoDevelopの日本語表示の文字化けの直し方(3.5に同梱されているものの場合) - 強火で進めUnityフォルダの中の"MonoDevelop.a…

フレームとUpdate(), FixedUpdate()

Unityは「フレーム」と言う概念で描画を繰り返す。映像と同じ考えだ。 ひとつのフレームの動作はfunction Update(){} の中に記述するが、Update()は実行間隔は一定ではない。 そこで、前のループからの時間経過を表すTime.deltaTimeを使う。定めた速度にTime…