Unityな日々(Unity Geek)

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

2012-01-01から1年間の記事一覧

他のGameObject、Componentにアクセスする

現在のScriptがアタッチされているGameObject以外のGameObjectにアクセするには次の方法がある。 1)Inspectorでアサインする public変数としてGameObjectを定義し、Inspector上で該当GameObjectをアサインする方法。 簡単だが、この方法だとScriptだけで完…

同階層のComponentにアクセスする

Componentとは、GameObjectに付加する部品のようなもの。一般的には、GetComponent("Component名") で取得する。javascript GetComponent(Transform).Translate(0, 1, 0);C# using UnityEngine; using System.Collections; public class example : MonoBehav…

Timeクラスを使う

Timeクラスのプロパティ プロパティ 内容 time ゲームが始まってからの時間 (Read Only) timeSinceLevelLoad 現在のレベルがロードされてからの時間 (Read Only) deltaTime 最新のUpdateのインターバル (Read Only) fixedTime FixedUpdateが開始されてからの…

ベジェ曲線にそってオブジェクトを動かす

参考:Bezier Curve Unityは標準ではベジェ曲線を扱うクラスはない。そこで、デベロッパーネットワークの投稿にあったベジェ曲線のクラスを使ってみた。1.ベジェ曲線のクラス P0〜P3は制御点、関数GetPointAtTime( float t )で、曲線上の座標を取得できる…

親オブジェクトを取得する

これは基本かもしれないが、親オブジェクトを取得するには、childGameObject.transform.parent とする。つまり、"transform"が必要。たとえば、衝突してきたオブジェクトのコライダがあるオブジェクトの親オブジェクトにメッセージを渡す場合は次のようにな…

GUISkinを変更する

UnityのデフォルトのGUSkinは、Assetに実体がないため、カスタマイズできない。 "Built-in GUI Skin"をダウンロードし、このGUISkinをデフォルトに設定することで、カスタマイズが可能になる。なお上のパッケージのSkinにデフォルトで設定されているフォント…

書式を使って文字化する

String.format()関数を使えば、書式付きで数値を文字化できる。 String.Format メソッド (String, Object) (System)書式の中に"{"や"}"を入れたい時は、"{{", "}}"と2重化する。string.Formatの書式指定文字列に中カッコを入れる方法 - うっかりプログラミ…

Unityから連番画像を書き出す

画面のスクリーンショットはApplication.CaptureScreenshot(ファイル名)で取得する。 下の例は、スクリーンショットをループ(Update等)に入れて、動画を連番ファイルで書き出すサンプル。(出典:ScreenShotMovie - Unify Community Wiki) using UnityEng…

C#  値型・参照型、値渡し・参照渡し

次のサブクラスに対し、 using UnityEngine; using System.Collections; //Sub Class public class Sub : MonoBehaviour { public int a; }次のメインクラスがあるとする。 using UnityEngine; using System.Collections; //Main Class public class Main : …

C#でcoroutineを使う

javascriptでcoroutineを使う際は、 処理1 yield WaitForSeconds(2); 処理2 と、yiledをはさむだけでよい。C#の場合は、StartCoroutine/IENumearatorの組になるようだ。 public void endRecording(){ if(isFile){ titleScreen.endRecording(); // StartCor…

ポリゴン・メッシュを裏返す

参考:ReverseNormals - Unify Community Wikiモデルのポリゴン・メッシュの一部が裏返っている場合の修正。下の例は、水平面で上向きに揃える。 // ReverseMesh (Flip Mesh) // First Version 2015/06/02 by A.Y.@XOOMS // Last Update 2015/06/02 by A.Y.@…

Materialの色を変える

Materialの色は、(renderer.)material.SetColor("_Color", Color)で変更する。下の例は、materialをPublic変数として受け取り、指定したOn/Off時間で色を変えるもの using UnityEngine; using System.Collections; public class FlashingLight : MonoBehavio…

InputManagerの設定を再利用する

Unity - Inputを参考に。XBOX360用コントローラーはのアサインは、XBOX360コントローラを使う - Unityな日々(Unity Geek)に書いた。InputManagerの設定は、プロジェクトフォルダ-ProjectSettings-InputManager.assetファイルにある。このファイルをコピー…

日付と時間

日付と時間の取得は、DateTimeクラスを使う。DateTime Structure (System) DateTimeは.NETクラスのため、Using System; (jsは、import System;)が必要。 using System; public class TestTime : MonoBehaviour { void Start () { DateTime thisDay = DateTi…

シーンを再スタートする

まっさらの状態から始めたい場合は、Application.LoadLeveo(0)を使う。 たとえば、ESCキーでリスタートしたい場合 if (Input.GetKeyDown(KeyCode.Escape)){ Application.LoadLevel(0); }

Public変数だがInspectorから見えないようにする

パブリック変数として他のクラスから参照したいが、Inspectorでは変更できない(=Private変数と同様に見えない)ようにしたい場合は、[HideInInspector]属性を付加する。 [HideInInspector] public float invisiblePublicVar;

特定のタグ名のGameObjectをすべて取得する

GameObject.FindGameObjectsWithTag()を使えば、同じタグ名のGameObjectを一挙に取得できる。 public GameObject[] cars; void Awake () { if (cars.Length==0) cars=GameObject.FindGameObjectsWithTag("Car"); foreach (GameObject car in cars) { //Awake…

外部データの読み込みTips

実行時に外部ファイルからデータを読み込みたい場合のTips実行環境がUnityEditor(=ローカル)か独立したアプリケーション(=オンライン)かの区別は、Application.isEditorで行う。 ローカル実行の場合は、ファイルURLの先頭に"file://"をつける。 if (Ap…

AssetStoreから購入したPackageの在り処

AssetStoreでAssetを購入する際、ダウンロードボタンをクリックしても保存先の指定はなく、デフォルトの保存場所に保存されてしまう。 Assetの実態はどこにあるのかと調べたところ、Asset Storeからダウンロードしたファイルの保存場所 - 強火で進めに書かれ…

ローカルファイルに書き込む

ローカルファイルに書き込む場合は、System.IOのFileクラスを使う。基本的な手順は、 File.CreateText(filepath) で、ファイルを作成し、 WriteLine(text) で、一行ずつ書き込むと言うことになる。最後にClose()でIOを閉じることも忘れずに。 using UnityEng…

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は任意)と、マイナーバージョンは関係なく適用…

特別なフォルダー名とコンパイルの順番

参考;About these special folders in unity3d ! Assets Editor Resources Plugins and so on ProjectビューはUnityプロジェクトのAssetフォルダの中身を表示している。ここには、ユーザーが任意のフォルダーを作成して各Assetを管理できるが、デフォルトで…

LightProbeを設定する

ライトプローブ(Light Probe)とは空間内にあるライトの情報を保存(ベイク)しておくテクニック。Lightmapは静的なオブジェクトには有効だが、動的なオブジェクトだと不自然さが生じる。Light ProbeはLight Mapほどの精度はないが、動的なオブジェクトも低…

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()); }呼…

VisualStudio Expressをインストールする

KINECT導入にあたっては、やはりSDKのサンプルファイルをを参考にしたくなる。これらはC++,C#またはVBで書かれているので、少なくともいずれかの開発環境が必要。C++はとっつきにくいし、VBはサンプルが少ないので、消去法的にC#を導入する。VISUAL C# EXPRE…

KINECT SDKを使う その1・環境設定編

参考:Microsoft Kinect - Microsoft SDK - Unity3DUnityでKINECTを使う。方法はいくつかあるが、正攻法でMicrosoftのSDKを使ってみる。 注)以下はすべてWindows7以降の環境で行うこと。Macは非対応。 1.KINECT SDKをインストールする Develop for Kinect…

カスタムpackageを作る

汎用的なアセットを再利用するには、packageを使う。プロジェクトウィンドウで、package化したいアセットを選択する Assets-Export Package... を選択 Exporting Packagesのウィンドウが開かれる。「Export」をクリック。 ”Include dependencies"をチェック…