【Unity】FPS、メモリ状態、デバイス情報の表示やVRにも使えるアセットAdvanced FPS Counter

#はじめに
「[Advanced FPS Counter](https://www.assetstore.unity3d.com/#!/content/14656?aid=1100l3oC8)」とは
<img width="1054" alt="スクリーンショット 2018-06-09 19.10.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/4e469119-9eb9-eeed-a342-28c9dcd0cee2.png">


>Unity 5 対応 ＆ [WebGLデモ]( http://codestage.ru/unity/fpscounter/demo/ ) をお試し頂けます！ 

>高度な機能をもつ、シンプルかつフレキシブルなゲーム内frames per second（FPS, フレーム数／秒）カウンターです： 

>FPSカウンター 
- 平均、最小／最大、MS値 
- 3つのカスタマイズ可能なインターバル内でのカスタムカラー 

>メモリーカウンター 
- 総プライベート、アロケーテッド＆モノメモリー 
- 精度を向上したオプショナルな高精度モード 

>デバイス情報カウンター 
- CPU: モデル、コアカウント 
- GPU: モデル、API、シェーダーモデル、フィルレート＆VRAM 
- RAM: 現在のデバイス上の合計RAM 
- SCR: 解像度、リフレッシュレート、ウィンドウサイズ、DPI 

>共通の特長 
- オプショナルのバックグラウンド（インビジブル）モード 
- フレキシブルなカウンターアンカーリング 
- スマートな"ダーティ"アップデートシステム 
- プラグインをイネーブル／ディセーブルするグローバルホットキー 
- 独立したアップデートインターバル 
- テストにおいてローエンドデバイスをシミュレートするためFPSを強制設定 
- 各カウンターに対するカスタムカラー 
- カスタムの共通フォント、スペーシング、ピクセルオフセット 
- などなど！ （インスペクターのスクリーンショットをご覧ください） 

>インスペクターおよび完全にドキュメント化されたAPIを用いてコードから完全にカスタマイズ可能。 
小さなフットプリントおよび簡単なワンステップのセットアップ。 

>- デスクトップおよびモバイル両方で動作します 
- Unity Free版およびPro版の両方で動作します 
- マイクロmscorlibおよび.NETサブセットにフレンドリーです 
- 完全なAPIドキュメンテーション 
- 完全なソース 

#動作確認
MacOS 10.13.4
Unity 2018.1.3f1
Advanced FPS Counter 1.3.7.0

#使い方　
GameObject -> Create Other -> Code Stage -> Advanced FPS Counterを選ぶとヒエラルキー上にAdvanced FPS CounterオブジェクトができるのでそのままプレイするとFPSやメモリ状態やデバイス情報の表示ができます
デフォルトのレイアウトだと左上がFPSとメモリ状態、下にデバイス情報が表示されます　あとでレイアウトの変え方もします
<img width="544" alt="スクリーンショット_2018-06-09_19_26_53.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/ebd33cca-bc0d-c9a9-eba2-ede47460b96a.png">

#VRで使う
Assets/Plugins/CodeStage/AdvancedFPSCounter/Examples/Prefabs/VR Exampleをヒエラルキー上にドラックアンドドロップします。基本これで表示できるのですが、
CanvasのWorldSpaceで表示されてるので（いわゆる３D）いい感じに位置調整しましょう　常に表示したい場合はVRカメラの直下に配置すればVRを見ながら確認できます
<img width="543" alt="スクリーンショット 2018-06-09 19.39.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/e1542a69-08f1-12e1-3f9a-27f085369bbd.png">
　　
#AFPSCounterスクリプトの解説
AFPSCounterスクリプトとはAdvanced FPS Counterオブジェクトにアタッチされているスクリプト
ほぼこのスクリプトで制御可能
##Common
<img width="347" alt="スクリーンショット 2018-06-09 20.14.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/39dd76cc-1d84-fe1c-2a38-4322b9ad62c5.png">

| 項目 | 内容 |
|:-----------|:-----------|
| Operation Modes|  **Disabled**非表示　裏でカウンターの処理を走らない 　**Normal**　表示 **Background** 非表示　裏でカウンターの処理が走っている
| Hot Key  |  表示　非表示の切替キー　Operation ModesがBackgroundだと機能しない？| 
| Circle Gesture  |  表示　非表示　の切替　　ゲーム画面でタッチしながら円のジェスチャーすると切り替えれる|
| Keep Alive  |  **引用** 高度なFPSカウンターのゲームオブジェクトを新しいシーンロードに保つことができます。 重要：AFPSCounterがネストされたGameObjectに配置されている場合、一番上のルートオブジェクトは代わりにアクティブに保たれます|
| Force FPS  |  フレームレートを設定する|

## look and feel
<img width="341" alt="スクリーンショット 2018-06-09 20.38.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/32e1adce-ddc7-8228-a3dc-e908d3677d7f.png">

| 項目 | 内容 |
|:-----------|:-----------|
| auto scale|  
| scale factor |  表示　非表示の切替キー　Operation ModesがBackgroundだと機能しない？| 
| font itself  |  表示　非表示　の切替　　ゲーム画面でタッチしながら円のジェスチャーすると切り替えれる|
| font size |  |
| line spacing |  フレームレートを設定する|
| counters spacing|  
| anchors padding |  表示　非表示の切替キー　Operation ModesがBackgroundだと機能しない？| 
| Pixel Perfect  |  表示　非表示　の切替　　ゲーム画面でタッチしながら円のジェスチャーすると切り替えれる|

**Effects**

| 項目 | 内容 |
|:-----------|:-----------|
| Background |　バックグラウンドの色の設定、表示範囲  
| shadow |  文字に影をつける、強さもつけられる| 
| outline | 文字にアウトラインがつける、太さも設定できる |
| Move All To | FPS、メモリ状態、デバイス情報全部レイアウトを任意の一箇所に集める |

##Advanced Settings
<img width="384" alt="スクリーンショット 2018-06-09 20.57.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/4998f8c1-1ad5-2f1c-659a-33bc9b140a08.png">

| 項目 | 内容 |
|:-----------|:-----------|
| Sorting Order |　Canvasの Sorting Orderと同じ意味　高いほど手前に表示でき低いと奥に表示される

##FPS Counter
<img width="387" alt="スクリーンショット 2018-06-09 20.58.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/7143415b-a8ad-aa8c-b7e9-82d68abbee58.png">

| 項目 | 内容 |
|:-----------|:-----------|
| interval  |　更新間隔
| Anchor  |　表示位置
| ColorRange  |　指定された間隔のFPSの色を文字に設定する　例えば５０FPS以上で緑 １〜３０FPSは赤とか
| Style  |　文字のスタイル
| Milliseconds  |　1フレームの処理に費やされたおおよその時間
| Average FPS |　平均FPS
| MinMax FPS  |　最小および最大FPS
| Render Time   |　フレームのレンダリングにカメラが費やしたおおよその時間

##Memory Counter
<img width="380" alt="スクリーンショット 2018-06-09 21.16.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/d9d3093b-f043-712c-b45b-b0bcdda26d9b.png">

| 項目 | 内容 |
|:-----------|:-----------|
| interval  |　更新間隔
| Anchor  |　表示位置
| Color  |　色
| Style  |　文字のスタイル
| Precise  |　小数点以下の表示　非表示
| Total |　PC全体のメモリの総量
| Allocated  |　アプリケーションで使用されているメモリの総量
| Mono   |　Monoに割り当たれたメモリの総量
| GftDriver  |　グラフィックスドライバに割り当てられたメモリの量

##Device Information
<img width="388" alt="スクリーンショット 2018-06-09 21.16.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/158441/e73be682-07f8-5a93-fdcc-808733e69c3b.png">

| 項目 | 内容 |
|:-----------|:-----------|
| Anchor  |　表示位置
| Color  |　色
| Style  |　文字のスタイル
| Platform  |　OSバージョン
| CPU |　CPUの名前
| GPU Model  |　GPUの名前
| GPU API |　グラフィックスAPI
| GPU Spec |　グラフィックスシェイダーモデルとVRAM
| RAM |　現在のデバイスの合計RAMをMegsで出力します。
| Screen |　画面解像度
| Model |　デバイスの名前　モバイルにおすすめ