FC2ブログ
    08 «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.» 10

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

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

     

    【ハルシオンUnityブログ】DateTimeを使って翌日の0時を取得する方法 

    こんにちは。
    大坂です。

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

    PV:


    この前ちょっとしたことでゲーム起動の翌日の0時が必要になったのでメモ。
    「DateTime.Today」と「AddDays」を使うだけなんですけどね。


    private void Start()
    {
    Debug.Log(DateTime.Today.AddDays(1));
    }


    今日が 2023/9/28 なので翌日の0時が正しく取れています。


    これを使って現在時間から翌日0時までの残り時間とかを表示したのですが、もっといい方法あるんですかね。
    とりあえずやりたいことはできたのでメモという感じです。

    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンUnityブログ】TextMeshProつこてますか?文字溢れしそうなときに勝手に...をつけて省略してくれる機能とかあるんすね 

    おはようございます。坂内っす。
    先週はTGS2023がありましたが、皆さんいきました?
    私は今年もいかずに、XやYoutubeで見てました!
    いずれ、TGSにブース側で出てみたいと思った今日この頃です。


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

    PV:



    TMP(TextMeshPro)使ってますか?
    まぁ最近のUnityだと標準機能として入ってるので、だいたい皆さん使ってますよね。
    ポケガなんかは、SuperTextMesh使ってるんですが、今だとTMPのほうが使い勝手も含めよさそうですね・・・

    次回何か制作するときはTMP使おうと思いました。

    さて、TMPの素敵機能があったので紹介。
    昔この機能あったっけなぁ??

    ①文字溢れするときに...をつけて省略してくれる機能
    TMPのサイズを超える文字数の場合、デフォルトでは改行されてしまうのですが、OverflowをEllipsisにすることで、「~~...」とやってくれる。



    すんげ~使いやすいじゃん。

    ②上記みたいな感じだけど、...をつけないで表示できるまで表示する機能
    ...つかないで、ギリギリまで表示する方法はOverflowをTruncateにすることでできます。



    ③文字溢れの分を違うTMPコンポーネントに表示する機能
    OverflowをLinkedにすることでできる。

    なにこれ新しいじゃん。




    TMP1であふれた分をTMP2に表示してる感じ。
    使う機会があるかわからないけど面白いね!


    TMPの設定一つでこんなことができるようになってたんですね。
    Unityに標準で含まれる前にTMP使ってたけど、最近使ってなかったのでしらんかったです。
    TMPのほうが色々と記事も多いしよさそう!

    ってことで、簡単なTMPの機能についてでした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンUnityブログ】TextMesh Proでリッチテキストを除外したテキストを取得する 

    こんにちは。
    大坂です。

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

    PV:


    TextMesh Proでリッチテキストを除外したテキストを取得する方法です。
    TextMesh ProのGetParsedTextメソッドを使うだけです。


    text.text = "<color=red>PocketGirl</color>";

    // ForceMeshUpdateをしないと正常に受け取れないので実行
    text.ForceMeshUpdate();

    Debug.Log(text.GetParsedText());




    ちゃんとリッチテキスト部分を除外して取得できていますね。
    スクリプトで除外した部分だけを使いたいときなんかは便利そうです。

    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンUnityブログ】UnityのSceneビューのオーバーレイをON/OFFする 

    こんにちは。
    大坂です。

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

    PV:


    UnityのSceneビューのオーバーレイをON/OFFってできるんですね。
    することはあんまりないかもしれませんが。

    方法はSceneビューでスペースキーを押すとできます。


    使うかどうかはわかりませんが、こんなことも出来ますよ!という紹介でした。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンUnityブログ】コンポーネントをアサインする際にはpublicがいい?SerializeFieldがいい? 

    こんにちは。
    あと3か月で今年も終わろうとしてますね!
    なんか早い1年だった感じがします。
    それにしてもポケガ3のDL伸びませんね。
    坂内っす。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    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などのコンポーネントをアサインする際に、publicを使わないで[SerializeField]をつけることが多くなりました。

    ものっそい[SerializeField]が並ぶんですが、これが正しい?




    意味的にはpublicより、こっちのほうが正しいですよね?

    publicって「どこのクラスからでもアクセスができる」というアクセス修飾子ですもんね。

    基本的にはUIなどのコンポーネントって、他からアクセスしないで、UI等を司るクラスからしか触れないようにしたほうがいいかなと思ってます。

    他クラスから勝手にTextとかImage変えられたくないっすもんね。

    そのため、private 且つ [SerializeField]がいいのかなと。



    [SerializeField]は重いといった記事を見たことがあり、publicのほうがいいのか?と思った時期もありました。

    今調べるとそんなことを書いてるところはなさそう・・・・(気のせいだったかな



    基本は外部との繋がりがないものについては、private + [SerializeField]でよさそうですね。

    publicを多用している方は[SerializeField]を視野に入れたほうがいいと思ってます。


    ということで、SerializeFieldおじさんでした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】TextMesh Pro のテキストが変更されたのを検知したい時 

    こんにちは。
    大坂です。

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

    関東に台風が直撃しそうですね。関東にお住まいの方は気を付けてくださいまし。

    TextMesh Pro のテキストが変更されたのを検知したい時の方法です。

    public TMP_Text text;

    private string prevText;
    private string nextText;

    private void OnEnable()
    {
    TMPro_EventManager.TEXT_CHANGED_EVENT.Add(OnTextChanged);
    }

    private void OnDisable()
    {
    TMPro_EventManager.TEXT_CHANGED_EVENT.Remove(OnTextChanged);
    }

    private void OnTextChanged(Object obj)
    {
    if (obj == text)
    {
    Debug.Log($"テキストが変更されました。{prevText}⇒{nextText}");
    }
    }


    これだけ書いてあげればスクリプトでテキストを変更した時に検知してくれます。

    一応変更のテスト。

    void Start()
    {
    prevText = text.text;
    text.text = "ポケットガールよろしくね!";
    nextText = text.text;
    }



    ちゃんとログが出ますね。
    テキストの内容が変更された時に何かしたい場合は便利そうです。

    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンUnityブログ】評価演算の&&と&の違い。&1個の使い道ってあるの? 

    こんにちは。
    もう秋だというのに全然涼しくなりませんね。
    日本も四季がなくなっていくっていう記事以前見ましたが、すでになくなってそうですね。
    坂内っす。


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

    PV:



    最近演算子のことをちょっと調べる機会があったんです。
    普通によく書く演算子


    int a = 2;
    int b = 3;
    if (a == 1 && b == 3) {
    Debug.Log("同じだよ");
    } else {
    Debug.Log("違うよ");
    }



    &&

    ってやりますよね。

    「aが1 且つ bが3の場合true」

    上記のコードだと、aには2が入っているので、このifの中には入りません。

    違うよ

    と出力されます。

    この「&&」というように&を2個かくのを「短絡評価」というようです。

    「&」の評価と「&&」の評価の違いはなんでしょうか?


    ●「if(a == 1 & b == 3)」の場合
    aは1ですか?イイエ。
    bは3ですか?ハイ。
    片方がイイエなので、ifの中には入りません。


    ●「if(a == 1 && b == 3)」の場合
    aは1ですか?イイエ。
    イイエが1つでもあったので、ifの中には入りません。

    短絡評価の場合は、&&の前の評価がfalseの時点で&&の後の評価はしなくなります。
    これによって処理が早くなるらしいですね。

    確かに&&評価の場合は、片方がFalseの時点でそれ以降関係ないですもんね。

    では、なんで「&」なんてあるのか?全部「&&」でいいんじゃない?
    って思ったあなた。&だけのこともあるかもしれません。

    こんな感じのコードがあるとした場合、

    using UnityEngine;

    public class Blog20230904 : MonoBehaviour
    {
    int a = -1;
    int b = 2;
    int bChkCnt = 0;

    void Start()
    {
    if (CheckA() & CheckB()) {
    Debug.Log("TRUE");
    } else {
    Debug.Log("FALSE");
    }
    Debug.Log("CheckCount : " + bChkCnt);
    }

    bool CheckA() {
    if (a > 0) {
    return true;
    } else {
    return false;
    }
    }

    bool CheckB() {
    bChkCnt++;
    if (b > 0) {
    return true;
    } else {
    return false;
    }
    }
    }



    aのチェックとbのチェックを行い、両方のチェックでTrueが帰ってきたらTRUEと表示する。
    Bのチェックの際にBをチェックした回数をカウントアップしたい。
    この場合、「&&」だとチェックAがFalseの場合にBのチェックが行われないのでカウントが上がっていきません。
    そういう時には「&」を使い、毎回Bのチェックも行いカウントアップすることができます。

    どうでしょうか?
    こんなコードあり得るんか・・・?まぁあるかもしれない。
    プログラムの要件によりますよねw

    ということで、評価演算の「&&」と「&」の違いでした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0