ピクセル単位にするのはスポットライトのみにし(負荷が少ないので)、ほかは頂点単位にすべき。ピクセル単位は負荷が大きい。複雑なシェーダを使うと時間がかかる。シェーダの透明をアルファで抜くのは負担が大きいのでできるだけ使わない。透明部分が多いほど負荷が大きい。一つのオブジェクトを複数ライトが照らすのは負荷が大きい。シャドウ、ピクセルライト、反射をオフにする、少なくする。一つのオブジェクトのスキンメッシュレンダラは一つにする。二つにすることもできるが、2倍の時間がかかる。メモリとガベージコレクション:そのシーンで使われなくなったオブジェクトは、メモリから消されて新たに空きメモリを自動で確保するようにできている。関数の中で配列を使用するときは、関数の最初の行で行い、関数の中では行わないようにする。......のように、関数宣言と同時に配列を宣言する。このほうが、中で配列を作るよりも負荷が少ない。中で配列を作るとガベージコレクションが頻繁に行われて、CPUの負荷が増す。メモリリーク:これが起こるとクラッシュする。情報を見ながらチェックする。テクスチャ:縦横の解像度を2の乗数にする。512や1024など。4096が限界で、これ以上の解像度は使えないので注意。安全に行くなら2048が限界と見ていい。タイリングできるものはタイリングし、読み込むテクスチャはできるだけ小さい解像度にする。同じ面積でも、多数のテクスチャを使うよりは一枚の大きなテクスチャを使うほうが負担は少ない。ミップマップを積極的に使う。遠ざかると完全に見えなくすることで負荷を減らせる。圧縮テクスチャを使うほうが負担が軽い。32ビットよりも16ビットのほうが負担が軽い。インスペクターの下のMaxSizeを減らす。ここでは見た目で気にならなくなるギリギリまで下げるとよい。元のファイルは変える必要はない。ファイルは圧縮されたほうがよい。メカニムのパフォーマンス最適化:ボーン数が多いと、数にほぼ正比例して負荷が重くなる。数15と30では2倍の違い。ボーンを使っていても、それがアニメーションしていなければほとんど負荷は増えない。一つのキャラクターに2つ以上のメッシュレンダラをかけることはできるが、負荷が大きくなる。アニメータは、コントローラーを追加しなければ負荷は増えない。動かないものにはコントローラーをつけないほうがいい。スケールを変化させるアニメーションがあると負荷は増える。アニメーションレイヤーの数が増えると負荷が増える、というわけではないが、全体のアニメーションの数に負荷は比例している。全レイヤー含めて大量のアニメーションがあれば、それなりに負荷が大きくなる。レイヤーが多くてもアニメーションやボーン数が少なければ負荷は少ない。Humanoidの場合、不要なボーンをボディマスクで隠すことで負荷を減らせる。指はボーン数が多いので、不要ならカットするとよい。Genericではrootmotionを使うと負荷が増えるらしい。AndroidではNEONというものがないため、ほかのものより負荷が大きいらしい。Humanoidでは負荷が大きい。GenericよりもHumanoidのほうが負荷が大きいようだ。一般論でのキャラクターのポリゴン数は、モバイルでは1500以下、パソコンでは4000以下、プレステ3くらいでは7000以下でまともに動くらしい。IKをFKにすると負荷が減る。ファイルサイズの削減:フォトショップファイルはレイヤー単位で一つのファイルにし、psdのまま使用する。作業効率もよくなるし、サイズも減らせる。実際に使うのは低解像度のもので、高解像度のものは別に取っておいたほうが無難である。Unityの中で使用しないアセットはビルドしたときに排除されるので、余分なアセットが含まれていてもサイズが増えたりはしない。Unityの中で余分なファイルがあってもかまわない。////////////////Androidにインストール基本ゲームの製作中、定期的に実機でテストしていくほうがよい。Androidは無料、iOSは年間8400円のライセンスが必要。apkファイルのインストール:モバイルの設定で、セキュリティ、提供元不明のアプリのところを有効にするとインストールできるようになる。通常は、Androidならグーグルプレイからのアプリしかインストールできないようになっている。apkファイルを作ることができるなら、この方法でインストールすることができる。JDKやAndroidSDKは必要だと思う。それらは以下の手順に従う。テスト手順:JDKをインストールする。使っているスマホのUSBドライバをパソコンにインストールする必要がある。これができていないとエラーになる。ネットでDocomoなど検索してインストールする。次にAndroidSDKをパソコンにインストールする。Packagesなどと表示されている、必要なのは、9以上のAPI、SDKPlatformを少なくとも一つ、AndroidSDLPlatformToolsを一つ、BuildToolsを一つで、デフォルトでインストールされるはず)UnityでEdit>PreferenceでExternalのAndroidで先ほどインストールしたSDKの場所を指定。SDKのフォルダを指定すればよい。UnityでFile>BuildSettingでAndroidを選択、インストールするシーンをScenesInBuildに加える。AddCurrentで必要なシーンを追加。PlayerSettingを開いて、インスペクターで、AndroidのOtherSettingsを選択、BundleIdentifierを入力。このゲームの識別名前で、好きな名前を入力するが、一般には国名.作者名.アプリ名と入れる。「jp.shigetaka.mygame」など。ほかの項目も入力する。ResolutionAndPresentation:画面の設定。Icon:アイコンを指定。SplashImage:ゲーム起動時に表示される画像。無料版では強制でUnityと表示される。OtherSettings:きれいな順からDefferd,Forward,Lit。モバイルではDefferdは不可。ゲームのバージョンやそのコードを入れる。ほかはデフォルトでもいい。PublishingSettings:ストアへ出すときに設定する。テストするアンドロイド端末で、設定の開発者向けオプションを表示する。これはバージョンによってデフォルトで表示されなくなっていることが多いので注意。locationsをONにしておく。設定のセキュリティで、提供元アプリのインストールを許可する。ないとインストールできない。アンドロイドとパソコンをUSBでつなぎ、File>BuildAndRunする。アンドロイドでいきなりゲームが始まる。注意:2014/6/1現在、JDKの64bit版と、AndroidSDKの64bit版は、64bitのパソコンでうまく動作しないため、両方32bitのものをインストールするようにする。Unityが64bitに対応していないのかもしれない。Androidでの注意点:Androidではテクスチャムービーは再生できないらしい。iphoneでも同じ。代わりにストリーミングプレイバックを使用する。正方形でないテクスチャは使えない。テクスチャでETC形式というのが安定して使えるらしい。OnMouseEnter、OnMouseOver、OnMouseExit、OnMouseDown、OnMouseUp、およびOnMouseDragイベントは存在しない。ストリーミングはサポートされていない。アプリが50MB以上の場合、GooglePlayで売るには分割する必要がある。分割はやり方もかなりややこしいので50MBを超えないようにするといい(それぞれ50MB以内に収め、別のアプリとして発売する)Android特有の設定:入力はInput、画面についてはHandheldを参照。Orientation(このプロパティは、iOSおよびAndroid間で共有されます。)PortraitデバイスはPortraitモード、持ち方は縦向きでホームボタンが下。DownデバイスはPortraitモードで逆さま、持ち方は縦向きでホームボタンが上。RightデバイスはLandscapeモード、持ち方は横向きでホームボタンが左。LeftデバイスはLandscapeモード、持ち方は横向きでホームボタンが右。Bufferディスプレイバッファが32ビットカラー値(デフォルトでは16ビット)を保持するために作成するかを指定。Effects(イメージエフェクト)でアルファを必要とする場合であり、理由はディスプレイバッファと同じ形式にRTを作成するためです。Gingerbread以前のOSではサポートされてません(強制的に16ビットになります)。Buffer(少なくとも)24ビットカラー値を保持するためディスプレイバッファを作成するよう指定。パフォーマンスに影響を及ぼす可能性があるので、'z-fighting'やその他の画像の乱れがある場合のみ使用して下さい。AndroidAndroidゲームで使用したいカスタムアイコンを割り当てる場合、オンにします。異なるサイズのアイコンを、以下の箱の中に収めます。Proのみ)iOSのスプラッシュ画面に使用されるべきテクスチャを指定。標準のスプラッシュ画面サイズは320×480になります。Scalingデバイス上のスプラッシュ画像の拡大・縮小の方法を指定します。Batchを使用する場合に設定(WebPlayerではデフォルトで無効)。Batchを使用する場合に設定(デフォルトで有効)。Networkのアカウントからプロビジョニング証明書で使用される文字列(これはiOSとAndroidの間で共有されます)。Versionバンドルのビルドバージョン番号を指定、ビルドバージョンが上がったことを示す(リリースされたかどうかにかかわらず)。単調に増加する、ピリオドで区切られた一つ以上の数字。Code内部バージョン番号。この番号はひとつのバージョンが、別のバージョンより新しいかどうかを判断するための数字で、高いほうが新しいです。ユーザーに表示するバージョン番号ではなく、その番号はversionName属性によって設定されます。"100"のように、整数として設定しなければなりません。次のバージョンが、より高い数値であるかぎり好きに定義することができます。ビルド番号でも問題ありません。"y"をエンコードし、整数に変換することができます。それとも、単に新しいバージョンをリリースするたびに、1つ数を増やすことができます。Levelビルドをサポートするのに最低限必要なAPIの最小バージョン。GLバージョンのいずれかを選択します。1.xのみサポートされています。AutomaticOSで自動判断。ユーザーが後からアプリを相互に移動することができます。External可能であれば外部ストレージ(SDカード)にアプリをインストールします。OSでは保証されないため、出来ない場合はアプリは内部メモリにインストールされます。Internal強制的に内部メモリにアプリをインストールします。ユーザーはアプリを外部ストレージに移動することができません。AccessRequireにすると、スクリプトがこれを使用していない場合でも、ネットワークのアクセス許可が有効になります。開発ビルドでは、自動的に有効化されます。(SDCard)に設定すると、SDカードなどの外部記憶装置への書き込みアクセスを可能にします。開発ビルドでは、自動的に有効化されます。