FC2ブログ
    06 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 08

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンUnityブログ】計算した後の小数点同士の比較で思ってたものと違う結果が返ってきたよ。 

    坂内っす。
    昨日は東京ゲームダンジョン3がありましたね。
    ちょっと行くことができなかったですが、盛り上がってたようです!
    みなさんお疲れ様でした。
    来月は横浜ゲームダンジョンがあります。
    こちらには遊びに行こうと思っていますので、会える方会いましょう!


    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:



    Unityで小数点の比較をすると、思ったのと違う結果が返ってきたりします。


    using UnityEngine;

    public class Blog0731 : MonoBehaviour
    {
    void Start()
    {
    float a = 0.1f;
    float b = 1.1f - 1f;
    Debug.Log("a : " + a + "/b : " + b);
    if (a == b) {
    Debug.Log("同じだよ");
    } else {
    Debug.Log("違うよ");
    }
    }

    }



    こんなコードを書いてみた。
    aもbも同じ0.1なんだけど、結果はこう。




    小数点の計算は丸め誤差が出てしまうので、こういうことになってしまうらしいです。
    こんな時には、Mathfにいい関数があるぽいですね。

    Mathf.Approximately
    https://docs.unity3d.com/ja/2019.4/ScriptReference/Mathf.Approximately.html


    using UnityEngine;

    public class Blog0731 : MonoBehaviour
    {
    void Start()
    {
    float a = 0.1f;
    float b = 1.1f - 1f;
    Debug.Log("a : " + a + "/b : " + b);
    if (Mathf.Approximately(a, b)) {
    Debug.Log("同じだよ");
    } else {
    Debug.Log("違うよ");
    }
    }

    }



    こうすれば、結果はこうなります。




    ということで、計算した小数点同士の比較とかには気を付けましょう。

    では、あでゅ~ノシ


    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】TextMeshPro で文字列の行数を知りたい時 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    TextMeshProで改行とかなくても行数を知りたい場合の方法です。

    public static void GetLineCount(this TMP_Text text, string msg)
    {
    var info = text.GetTextInfo(msg);
    return info.lineCount;
    }

    これだけ、行数が分かります。
    行数によって何か違う処理をしたいときなんかに使えますかね。

    短いですがこれにてノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンUnityブログ】UnityデフォルトのScrollView使ってたけど、重いらしいのでLoopScrollRectをチラ見してみた。 

    まだ7月なのに暑いっすねえ
    8月9月がやばそうっす。坂内っす。


    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    Unityでゲーム作ってて結構ScrollRect使ってるんですが、こいつが結構重いらしい。
    少しでも画面を軽くするためには、ScrollRectは使わないほうがいいらしいっす。

    極端な例でいくと、10000個のアイテムをスクロールビューにいれるとここまでFPSが落ちます。



    そんな場合は素敵なスクロールビューのOSSがあるぽいです。

    「LoopScrollRect」というものです。

    https://github.com/qiankanglai/LoopScrollRect

    無限スクロールなどにも対応しており、なかなか使い勝手がよさそうです。

    ちなみにLoopScrollRectを使い、10000個のアイテムをスクロールビューに入れるとこんな感じです。
    こんなに軽い!




    マスク外のオブジェクトを消しているのが効いているんでしょうか。

    また、デフォルトのScrollViewだと簡単に行えない無限スクロールもこのOSSなら簡単にできるぽいです!

    基本的な使い方はこちらのブログに紹介があったので、ご参考にどうぞ。

    [コガネブログ]さん
    https://baba-s.hatenablog.com/entry/2019/01/10/150000

    ということで、スクロールを使う場合はLoopScrollRectがおすすめ!

    ってことで、LoopScrollRectの紹介でした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unity Recorderって使ってますか? 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    今更な感じですが、Unity Recorderって使ってますかね?
    UnityのGame画面の動画やスクショが簡単に取れる機能です。
    僕は動画はあんまり取りませんが、Appleの課金の審査用画像を撮るのによく使ってます。

    [Window]-[General]-[Recoder]-[Recoder Window]で開けます。


    こんな画面が出てくるので、「Add Recoder」を押してとりたいものを選択します。(今回は画像をとりたいので 「Image Sequence」を選択)


    赤丸のところを押して任意の保存先を指定して、ゲームを起動してスクショをとりたい画面で「START RECORDING」を押したらスクショが取れます。


    あとデフォルト設定だと連続でずっとスクショを撮り続けてしますので、スクショが一枚欲しい場合は、「RecordingMode」を「SingleFrame」に設定をすると一枚だけ撮れます。


    スクショだけなら自前で適当に作るか、他のを使ってもいいのですが、動画も撮れたりと便利なので紹介でした。

    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】GooglePlayでアプリサイズ150M制限で怒られるとき 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    Unityでアプリを作っていてプロジェクトが大きくなってきて、アプリのサイズが150MBを超えてしまってGoolePlayにあげられないことがあります。
    Addressableを使って外部サーバにファイルを置いたりして対策もできるのですが、Unityの「Split Application Binary」有効にすると、unity内部でgoogleのPlay Asset Deliveryを使用して、分割したAABを作成してくれるらしいです。



    スクリプトから変更したい場合は「PlayerSettings.Android.useAPKExpansionFiles」を「ture」にするだけ。

    工夫してアプリ容量を減らせるといいのですが、急ぎで簡単に解決する方法としてはいいかなと思いました。
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンUnityブログ】オブジェクトの多いUI画面とかで、SetActiveすると重くなる。そんな時の対応には程よくCanvasをつけるといいらしい 

    毎日暑い日が続きますね。熱中症にお気をつけくださいませ。
    24時間クーラーつけっぱの坂内っす。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    皆さんUnityでオブジェクトのONOFFにSetActiveって使ってますか?

    私は結構使ってます。

    実はSetActiveは重い って話があるみたいです。
    あんまり重さは感じたことないんですけどね・・・・

    こんな感じの構成の時
    (これはオブジェクトすごい少ないけど、本当はめっさオブジェクトが多いUIの時を想定)



    例えばImage2をSetActive(false)とかの処理を動かすと、一番上のCanvas全体に変更がかかってしまい、オブジェクトが多い場合重くなってしまうとのこと。

    これに対応するためには、それぞれのまとまりにCanvasをつけるといいらしい。

    どういうことかというと、Images、ButtonsにCanvasをつけてあげる感じ。




    この構成にして、Image2をSetActiveすると、ImagesのCanvasまでしか変更がかからないため、軽くなるらしいです。

    ということで、オブジェクトがたくさんあるUIの画面を作る際には、部分部分等でCanvasをつけてあげるといいみたい。

    今度やってみます!


    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】string を指定桁まで文字埋めしたい時 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    Stringを指定桁まで文字埋めしたい時は「PadLeft」、「PadRight」を使うと簡単にできますね。

    string test_1 = "1";
    // 4桁になるまで0で左埋め
    Debug.Log(test_1.PadLeft(4, '0'));
    // 4桁になるまで0で右埋め
    Debug.Log(test_1.PadRight(4, '0'));

    結果


    ちなみに元々の文字列の桁数より小さい数字を指定するとそのまま出力されます。

    string test_2 = "1234";
    // 3桁になるまで0で左埋め
    Debug.Log(test_2.PadLeft(3, '0'));
    // 3桁になるまで0で左埋め
    Debug.Log(test_2.PadRight(3, '0'));

    結果


    入力された文字なんかの桁数を増やしたいときなんかに便利ですかね。
    ではでは今週もこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンUnityブログ】UnityのUI作ってるときに9Patchとか9Sliceって言われるやつ使ってますか? 

    完全に1年の半分が過ぎてしまいました。
    やだやだやだ!坂内っす。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    UnityでUI作ってるときに、9patchとか9sliceって聞きますよね。
    使ってますか?

    何かというと、画像を「9つに分割して拡大縮小をする処理」のことなんです。

    例えばこんな感じの画像を用意します。
    横300x縦202



    この画像をImageにつけて、縦を伸ばすとこうなります。



    そりゃそうですよね。

    縦に伸ばしたら絵が伸びてしまいます・・・・

    こんな時に使うのが9patchです。

    まずは、画像を選択してSpriteEditorを開きます。




    緑の線を程よく中央のほうに持ってきて、9個に分割します。
    これが9patchとか9sliceの所以ですね。




    これを保存します。

    このままだとまだ画像が伸びたままになってます。

    ImageのImageTypeをTiledにすると、画像の伸びがなくなります。




    こんな感じで9patchを使うことができます。

    簡単な9patchの使い方でした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0