万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    timeScaleについて Unity

    Time.timeScale = 0;のときにどのUpdateが動いて、どのUpdateが止まるのかを調べた
    3大UpdateについてLogを仕込む。

        void Update ()
        {
            Debug.Log ("Update");
        }
    
        void LateUpdate()
        {
            Debug.Log ("LateUpdate");
        }
    
        void FixedUpdate()
        {
            Debug.Log ("FixedUpdate");
        }
    

    結果、

    Update => 動く
    LateUpdate => 動く

    FixedUpdate => 動かない

    FixedUpdateのみ止まる。

    もし、Updateでpositionを変化させる処理をした場合は、
    speed * Time.deltaTimeみたいに、Time.deltaTimeを仕込むのが一般的のようだ。


    OnGUIに関しても、timeScaleが0の時に効果が無い
    http://answers.unity3d.com/questions/15310/creating-a-pause-menu-problem-using-timetimescale.html

    UnityEngineのDebugとSystem.DiagnosticsのDebugクラス

    URL: http://qiita.com/rodostw/items/39183e62ed2a1f52f690

    他のクラスでDebugクラスがあれば、このテクニックが使えない。
    たとえば今回「SQLiteKit」で「System.Diagnostics」を使ってるのでハマった。

    Debug.Assertを使ってる箇所があるので、
    Debugが何故か先ほどのサイトで記載したUnityを上書きしてしまう。

    URL: http://forum.unity3d.com/threads/38720-Debug-Log-and-needless-spam

    このようにUnityEngine.Debugを継承していますよってアピールさせることを思いついて

    class Debug : UnityEngine.Debug
    {
    }
    

    を書いたが、Debugにsealed typeという継承禁止が定義されててできない・・。

    error CS0509: `Debug': cannot derive from sealed type `UnityEngine.Debug'

    どうしたものか。

    仕方ないので、

        using System.Diagnostics;
    

    のネームスペースをこの上書きDebugクラスに追加し、

    System.Diagnostics.Debugのメソッドに転送するために追加した

        // for SQLiteKit
        public static void Assert (bool condition)
        {
            System.Diagnostics.Debug.Assert (condition);
        }
    

    Unity StreamingAssetsをAndroidで

    public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");
    StreamReader reader = new StreamReader (filePath);

    のようにやると

    DirectoryNotFoundException: Could not find a part of the path "/jar:file:/mnt/asec/パッケージ名みたいな文字列/pkg.apk!/assets/ファイル名".

    のようなエラーが出る

    Androidの場合は、ファイルパスが特殊なので、WWWクラスを使うのが必須っぽい。

    リファレンスにあった
    http://docs.unity3d.com/Documentation/ScriptReference/Application-streamingAssetsPath.html