Unityな日々(Unity Geek)

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

script-基本

GUIのレイアウトを設定する

画面上に情報を表示するには、GUIクラスを使う。が、複数の情報を表示する場合はレイアウトも含めて一括設定できる、GUILayoutクラスが便利。各GUI要素を、GUILayout.BeginArea()~GUILayout.EndArea()で挟んで記述する。 void OnGUI(){ GUILayout.BeginArea(…

GUIにフォントを設定する

GUIの見栄えは、GUISkinで設定する。Projectビューで、Create-GUISkin フォントをプロジェクトに読み込む。 Windowsの場合、コントロールパネルーフォントをクリック。該当フォントをProjectビューにドラッグ&ドロップ Projectビューに読み込まえれたフォ…

Unityのバージョンで処理を変える

Unity Script Reference – Overview: Script compilation (Advanced) 特定のバージョンに対してのみ処理を行うことができる。例えば、Ver. p.q.r だけの処理は、 #if Use Unity_p_q_r #endif とする。p.q.x(xは任意)と、マイナーバージョンは関係なく適用…

C#の配列

UnityのライブラリやサンプルスクリプトはC#で書かれたものが多いので、C#の世界も理解しなければならない。今まではActionscript/javascript系を中心に開発してきたので、コードを眺めながら「??」となる点もいくつかあった。その覚書のひとつ。1)一般…

javascriptからC#のスクリプトを呼ぶ

まず、javascriptからjavascriptを呼ぶ場合、ひとつのGameObjectにそれぞれのjavascriptファイルをアタッチしてやる。たとえば、呼び出し側 #pragma strict var test:TestJS; test = GetComponent("TestJS"); function Start () { print(test.getNum()); }呼…

スクリプトを管理する

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

変数の命名規則

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

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

参考: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 - 型の暗黙宣言を可能…

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

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

連想配列(Hashtable)を使う

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

変数の型を変換する

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

外部ファイルへのパス

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

パスについて

ローカルデータにアクセスするには、"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 …

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

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

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

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

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

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

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

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

HOTweenのTips

HOTweenのベストプラクティスのページに書かれているTips。 最初のTweenを作る前に、HOTween.Initを実行する。HOTweenのインスタンスは削除せず使う。 TweenのIDを保存する際は、Id(テキスト)ではなく、IntId(整数指定)を使う。 同一の Tweener/Sequence…

HOTween Visual Editorをインストールする

HOTweenのdownloadページで、HOTween Visual Editorのリンクをクリックし、ZIPファイルを保存 ZIPファイルを解凍。"HOTweenEditor"と言うフォルダができる。 フォルダの中には、packageファイルがある。これを適当な場所に移動。(僕の場合は、Unity開発用に…

HOTweenを導入する

HOTweenは、高速・タイプセーフなオブジェクト指向Tweenエンジン。javascriptでもC#でも使える。 数値(および一部の非数値)プロパティおよびフィールド(number, vectorなど)を「アニメート」できる。 現在、Windows、OSX、iOS、Androidで作動。Flash用エ…