Unityな日々(Unity Geek)

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

2015-03-01から1ヶ月間の記事一覧

C#からJavascriptのクラスを呼びだせない時

C#からJavascriptのクラスは、通常のC#クラスと同じように呼び出せる。たとえば、 [SerializeField]protected FPSInputControllerREI fpsInputController; //Javascript Class ところが、これでは「該当クラスがない」というエラーが出る。 Assets/Scripts/R…

角度指定と外部呼出しに関するベンチマーク

Unityでは、角度は、オイラー角とクォータニオンの2つの方法で扱える。また、回転を設定する際、角度の絶対値と、Rotate()で相対角変化を与える方法がある。いったいどれがもっとも効率的、すなわち高速なのだろうか? また、あるオブジェクトのクラスから…

uGUIのテキストにブラーがかかってしまう問題

uGUI(Canvas UIシステム)のTextUI要素にブラーがかかってしまう問題は、既知のバグのようだ。 現時点では、対応策はピクセル解像度の大きなテキストを作り、Scaleを小さくして縮小する、という手しかないようだ。 Text UI要素のインスペクタは次のような感…

uGUI: スクリプトからUIのパラメータを変更する

uGUIへユーザが操作した際にメソッドを呼び出すのとは逆に、スクリプトからUIの状態やパラメータを変更したい場合もある。代表的な例を下にあげる。 テキスト uGUIのテキストを変更するには、テキストGameObjectのTextコンポーネントを取得し、このText.text…

スクリプトのテンプレートを追加する

スクリプトを新規作成する際に、独自のテンプレートを使いたいことがあるとおもう。 その場合は、Unityのインスールフォルダ/Editor/Data/Resources/ScriptTemplates/の下にある、 80-Javascript-NewBehaviourScript.js.txt 81-C# Script-NewBehaviourScript…

Materialを比較する

あるオブジェクトにアサインされている特定のマテリアルを別のマテリアルに置き換えたかったので、次のようなコードを書いた。 [SerializeField]protected Renderer rend; //Target Renderer [SerializeField]protected Material matFrom; //Change from thi…

"9x9 Slice" Spriteを作成する

UI用のイメージを設定する場合、イメージを拡大しても周囲のラインは画像が荒れるので拡大したくない。これを実現するのが、「9x9スライス」というテクニック。要は、4つの角はスケーリングせず、中間の画像のみ拡大するという手法だ。 これをUnityで実現す…

CanvasUI(uGUI)要素にアニメーションを設定する

CanvasUI(uGUI)のインタラクティブ要素(Button, Toggle, Sliderなど)は、「操作状態」に応じて「外観」を変更できる。 操作状態 各UI要素の状態には Normal Highlighted Pressed Disabled の4通りがある。'Highlighted'はフォーカスがあたった状態で、マ…

Canvas UI(uGUI)のイベント処理

CanvasUI(uGUI)システムでは、ユーザの操作をEventで授受する。たとえばButton要素の場合、インスペクタのButtonスクリプト・ブロックの一番下に、OnClick()という項目がある。ここにOnClick()イベントを受け取る関数と渡す引数を設定する。 タブの"+"をクリ…

Canvas(uGUI)の基本レイアウト

Unity4.6から導入された新GUI、"uGUI"。従来のGUIより柔軟な設定ができるuGUIの導入についてまとめた。 CanvasUI要素をシーンに配置する ヒエラルキビュー、Create-UIで、CanvasのUI要素が表示される。CanvasUIは、まず土台となるCanvasをシーンに配置し、そ…

ジェネリックリストのジェネリックリスト(ジェネリックリストの入れ子)を作る

以前、「Unityで使える広義の配列」で書いたように、最近のC#では、ArrayListよりGeneric Listが推奨されている。 要素の型を指定できるので、よりロバストなコードがかけるGeneric Listだが、Generic Listの要素にGeneric Listを指定する、すなわち、Generi…

インスペクタでプルダウンリストを使う

インスペクタにプルダウンリストを表示するには、enumを使う。 たとえば、iTweenプラグインのイージングタイプをプルダウンリストで指定するには、 public enum EaseType { easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCu…