2013年7月21日日曜日

[Unity]KeyCodeについて

エディタを拡張してショートカットキーを割り当てているときに、Event.keyCodeで取得できる値がプラットフォームで異なっていたという問題にぶち当たったのでメモ。

↓キーコード一覧
http://docs.unity3d.com/Documentation/ScriptReference/KeyCode.html

具体例:)
日本語キーボードでセミコロンの場所のキーコードが「Equals」になっている。
日本語キーボードでコロンの場所のキーコードが「Semicolon」になっている。


これらはいずれもWindows上でのみ発生しており、Mac上では現象は見られなかったのでおそらくバグであると思われる(たとえ仕様であってもそんな仕様が許されてしまっては堪ったものではないが)。

そういえばと思い、英字キーボード配列を確認したところ、Windows上だとKeyCodeから取得できる値が英字キーボード配列と同様のものだった。
どうやらWindowsだけ英字キーボード配列のままのらしい。

一応バグレポートは提出した。
修正されるまでは別のキー割当にしておく。


[Pixelmator]2.2のシェイプについて

シェイプ機能が大幅に強化された模様。
あまり使わないので分からないが、シェイプを追加できる。

↓チュートリアル動画を見れば分かる

簡単に説明すると、
シェイプにシェイプを追加して、出来たシェイプをシェイプツールにドラッグする。
また、シェイプをデスクトップにドラッグしたりもできる。
そうするとシェイプファイルができるので配布することもできる。

シェイプが配布されている場所

2013年5月26日日曜日

[Unity]Unityで開発するときにデバッガを使用する方法

Unityで開発を行うときに、デバッガを使いたかったのでメモ。

MonoDevelopを使用して、Unity用のデバッガを起動できる。
以下、Max OSXでの手順。

◆MonoDevelopUnityのデバッガを使用
 1. Mono側の設定
[Mono-Develop-Mac]->[Add-in Manager...]->Installedタブ->Unity->Mono Soft Debugger Support for Unityが有効になっていることを確認

 2. Unity側の設定
[Preference]->External Tools->Edit Attachingを有効にする

 3. デバッガーを使用する
ブレークポイントを設定する
[Run]->[Attach to point]->Unity Debuggerを選択してUnityと関連づけられたUnity用のデバッガーを選択する(なければインストール)
Unity Editorを実行する

[Unity]WebPlayer Pluginsのアンインストール方法

WebPlayerのPluginで問題が発生したのでアンインストールする必要があったのでメモ。
アンインストーラーが無いようなので、手動でPluginを削除した。

◆Max OSX
 1. ブラウザを全て終了する
 2. Macintosh HD/Library/Internet Plug-Ins/Unity Web Player.pluginを削除
 3. ゴミ箱を空にする

⬇英語だがシンプルな手順と、難しくない単語でまとめられているので分かりやすいと思う。
http://answers.unity3d.com/questions/43303/how-do-i-uninstall-the-unity-webplayer.html

※自分でやった手順を追記

2013年3月31日日曜日

[Unity]GameObject以下のコンポーネントへのアクセス方法


GameObjectコンポーネント以下のコンポーネントのゲームオブジェクトでアクセスする方法



children = gameObject.GetComponentsInChildren();
foreach (Transform item in children) {
 if ( !item.name.Equals(gameObject.name) ) {
  MeshRenderer meshRender = item.gameObject.GetComponent();
  if ( meshRender != null ) meshRender.enabled = _value;
 }
}
などでアクセスする。
ポイントはTransform型でアクセスすること。
基本的に全てのGameObjectはTransformを所有する決まりが有るので、
transformクラスからGameObjectへのアクセスが可能になっている。

アセンブリブラウザで確認すれば解るが、TransformクラスはComponentクラスを継承しているので、様々なオブジェクトを取り扱えるというわけだ。

http://docs-jp.unity3d.com/Documentation/Components/class-Transform.html

◆結論

GameObject=Transformという認識で問題ない。


しかし、スケール値の不均等によるパフォーマンスの問題や制限があるだなんて初めて知った……。

[Unity]Errorについて

Unity上で発生した珍しいエラーや解決が困難だったものをメモしておく。
※随時追記


is an ambiguous reference between
クラスの重複。
カスタムDLLをインポートした時に発生しやすい。
namespaceが重複してしまっているので、クラス名の前にパッケージ名を付与する必要が有る。

・DllNotFoundExeption
DllImportで読み込むときのファイルが存在しないと言っている。
とあるDLLを使おうとしたときに発生したのでメモ。


とりあえずこんなところ。

[Blender]Blender How To


Blender How To

Unityを使う上でサンプルオブジェクトはある程度エンジニアでも作れるようになっておかないといかんので、自分用にメモしておく。

◆最初にすること

 - Mayaをしばらく触ったことがあるので、基本操作をMaya版に設定変更する
 - 右クリックと左クリックの動作を変更しておくこと
 - 必ず操作方法のチュートリアルを見ること

特に、操作方法のチュートリアルは見ておかないと、後に別のチュートリアルを見た時に、「なんだそのウィンドウは!?」、「どうやったらそういう操作ができるんだ!?」などと困ってしまうことになる。

◆簡単なものを作成してみる or 操作してみる

・本のページめくりを作成するまでのチュートリアル
アニメーションの作成方法のチュートリアルとしては見た目面白いが、基本キー操作が解っていないとつらい。
操作方法のチュートリアルを飛ばしたのでここで詰まった。

・テクスチャの裏表に別々のテクスチャを貼付ける
原理は非常に簡単。
しかし、objファイルやfbxファイルに書き出した時に反映されていないので、Unityを使っていく上では必要なかった。

・操作方法の図解ブログ
この人は図解されているので説明が親切。
ほとんどのブログや公式の説明の類いは、文字だけの説明になっているので、特定のコマンドがどこに存在するのかが解り辛く、初心者には厳しい中、こういうのは非常にありがたい。

・移動、回転、拡大縮小の軸を限定する方法
G,R,Sに続けて[X,Y,Z]のキーを押すと限定できる。

◆必要なこと

 - アーチなどのように、四角形を少しだけ複雑にしたようなモデリングができる
 - 一つのオブジェクトに対してマテリアルを複数適用できる
 - 出力形式やパラメータ設定の違いを理解しておくこと

これくらい出来れば、モデリングの作成や修正の依頼する時にそこそこ話が通じる。
基本的にどういったモデルが必要になるかは実装するエンジニア次第なところがあるので、エンジニアも最低限これくらいはできないといかんな。
あとはその時の立場とかにもよるかもしれないが……