Weed.nagoya:便利ツールでネット活用

「Feel Physics」という物理教育アプリの開発・出前授業をしている会社で、アプリを開発しています

UnityのUpdate()をマネージャで管理して、重くて遅かったアプリを軽く速くする

処置前:

f:id:weed_7777:20170920134522p:plain

処置後:

f:id:weed_7777:20170920134552p:plain

「先輩、Unityアプリが重いんですけど」

「1フレームでUpdate()は何回呼んでる?」

「100回です」

「あー、それはマネージャをつくって管理した方がいいな。やり方を教えよう」

「ありがとうございます!」

UnityのUpdate()のコールは数が多いとアプリの実行の負担になります。そこで、Update()をUpdateManagerで管理してみましょう。プロファイラーを見ると違いがハッキリわかります。

こんな感じで書きます:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UpdateManager : MonoBehaviour
{
    public List<ManagedUpdateBehavior> list = new List<ManagedUpdateBehavior>();

    // Update is called once per frame
    void Update()
    {
        var count = list.Count;
        for (var i = 1; i < count; i++)
        {
            list[i].UpdateMe();
        }
    }
}

アプリ起動時にインスタンスをマネージャのlistプロパティに追加します:

UpdateManager um = GameObject.Find("UpdateManager").GetComponent<UpdateManager>();
um.list.Add(this);

するとプロファイラの様子が、こんな感じから…

f:id:weed_7777:20170920134522p:plain

こんな感じに変わります:

f:id:weed_7777:20170920134552p:plain

60FPSが見えてきました!


より詳細はUnity公式の以下の記事が参考になります:

blogs.unity3d.com

VagrantをPuTTYから使うとき、insecure_private_keyが見つからない

Vagrantにログインするには、以前はユーザー名:vagrant、パスワード:vagrantでOKだったのですが、今はvagrantSSH鍵を用意してMac/Unixではvagrant sshで簡単にログインできます。

Windowsの場合、PuTTYSSH鍵を自動で認識しないなど、追加の設定が必要になります。これについては以下のページを見れば解決します。

qiita.com

しかし、説明の中の「insecure_private_key」を見つけるのに苦労したので記事にしておきます。普通に操作すると、前述の鍵は該当フォルダにありません。

f:id:weed_7777:20170901091857p:plain

しかしこれは右下の拡張子フィルターを「All Files」にすると見つかります。

f:id:weed_7777:20170901091914p:plain

これだけなのですが、気づくのに時間がかかりました(汗)

「一歩ずつ」Chromeでデバッグのためにステップ実行している画面

twitter.com