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

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

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

     

    【ハルシオンUnityブログ】Enumをリスト化する 

    こんにちは。
    大坂です。

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

    PV:


    Enumをリスト化したかった時のお話。
    EnumのリストとEnumをstringのリストに変換する方法を紹介。


    public enum TestEnum
    {
    Test_1,
    Test_2,
    Test_3,
    Test_4,
    Test_5,
    Test_6,
    }

    public void Start()
    {
    // enum の TestEnum をリストに変換して取得
    List<TestEnum> enumList = Enum.GetValues(typeof(TestEnum)).Cast<TestEnum>().ToList();

    // enum の TestEnum を string のリストに変換して取得
    List<string> stringList = new List<string>(Enum.GetNames(typeof(TestEnum)));
    }


    デバッグ機能とかを作るときにリストにしたかったことがあったので、変換方法の紹介でした。
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】C#(Unity)でコードのファイル分割をする方法。OS毎にファイルを分けても同じ処理をすることができるよ 

    こんにちは。坂内っす。

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

    PV:


    Unityでコードを書いているうち、1つのクラスが長くなったりした場合ファイルを分割することができます。
    publicとclassの間に「partial」を書くことで行うことができます。

    [PartialA.cs]

    using UnityEngine;

    public partial class Partial : MonoBehaviour
    {
    public void TestA() {

    }
    }



    [PartialB.cs]

    using UnityEngine;

    public partial class Partial : MonoBehaviour
    {
    public void TestB() {

    }
    }



    こんな感じで、ファイルはPartialA.csとPartialB.csの2つですが、クラスとしては、Partialというクラス1つとして使用できます。

    これが普通のファイル分割の方法なんですが、プラットフォーム依存コンパイルを指定して分割も可能のようです。

    [TestAndroid.cs]

    #if UNITY_ANDROID
    using UnityEngine;

    public class Test : MonoBehaviour
    {
    public void View() {

    }
    }
    #endif



    [TestIOS.cs]

    #if UNITY_IOS
    using UnityEngine;

    public class Test : MonoBehaviour
    {
    public void View() {

    }
    }
    #endif



    こうすることで、同じViewというメソッドの処理をOS毎に分けることができそうです。
    (追うのが大変になるのでちゃんとコメントにこの旨を書いておくことをおすすめします)


    ということで、コードのファイル分割の話でした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンUnityブログ】一部海外でのfloat等小数点区切り文字が,(カンマ)で問題がでてしまう件 

    こんにちは。坂内っす。
    ご機嫌麗しゅう?

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

    PV:


    Unityで扱うfloatって「0.3」とか「122.22」とかって数値が入るじゃないですか。
    これ、一部の海外だと「0,3」や「122,22」ってなっちゃうの知ってます?

    [Oracleの区切り文字に関するガイド]
    https://docs.oracle.com/cd/E19455-01/806-2727/overview-9/index.html#:~:text=%E3%82%A4%E3%82%AE%E3%83%AA%E3%82%B9%E3%81%A8%E7%B1%B3%E5%9B%BD%E3%81%A7%E3%81%AF%E5%B0%8F%E6%95%B0,%E5%8C%BA%E5%88%87%E3%81%A3%E3%81%9F%E3%82%8A%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

    こんな感じでフランス式の国では、小数点が,(カンマ)で区切られるようです。

    Unityでもこれは対応されており、以下のようなコードを端末にビルドして、端末の言語設定を変えることで確認できます。

    [Blog1120.cs]

    using TMPro;
    using UnityEngine;

    public class Blog1120 : MonoBehaviour
    {
    [SerializeField] TMP_Text lbl1;
    [SerializeField] TMP_Text lbl2;

    void Start()
    {
    float flt = 0.3f;
    lbl1.text = flt.ToString();

    lbl2.text = (flt * 2f).ToString();
    }

    }



    日本語設定


    フランス語設定



    こんな感じ。
    ちゃんカンマの小数点でも計算はしてくれますので問題はありません。

    しかし、こんなコードが混ざっていると問題がおきます。


    using TMPro;
    using UnityEngine;

    public class Blog1120 : MonoBehaviour
    {
    [SerializeField] TMP_Text lbl1;
    [SerializeField] TMP_Text lbl2;

    void Start()
    {
    float flt = 0.3f;
    lbl1.text = flt.ToString();

    // 小数点のカンマ以降を取得
    string[] ary = flt.ToString().Split(".");
    lbl2.text = ary[1];
    }
    }



    こんなことをした場合、結果が変わってきます。

    日本語設定



    フランス語設定



    フランス語のほうは以下のエラーが出てしまいます。

    IndexOutOfRangeException: Index was outside the bounds of the array.
    at Blog1120.Start () [0x0002b] in :0

    ドットがないため、ary[0]に「0,3」が入り、ary[1]には何も入らない状況になります。

    対応策としては、Splitなどを複数charで行うことでできそうです。

    string[] ary = flt.ToString().Split(new char[] {'.', ','});

    ということで、一部海外(フランス式)のfloatやdoubleでの小数点の区切り文字問題の対応でした。


    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】デジゲー2023いってきたよ!いつものごとくお邪魔したブースの写真のせるだけの回 

    こんにちは!坂内っす。


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

    PV:


    11月12日はデジゲー博2023でした。
    https://digigame-expo.org/

    同人・インディー デジタルゲーム展示・即売会です。


    今回も遊びにいってきましたよ!



    案の定写真並べるだけのブログです!

    【Cactus Gardernさん】
    紅香さんのブース。
    これもうリリースできちゃうんじゃ?できあがってますよね!


    【ゾウノアシゲームズさん】
    ともぞうPさんのブース。豆腐を操作するアクションゲーム!


    【タツヤゲームさん】
    とりあえずそのまま写真アップ!



    【Mottoさん】
    対戦クロスワードゲームがありました!楽しいですよね!


    【椎葉さん】
    なつかしのレコード盤が売ってました!


    【ZephyrStudioさん】
    モン娘グラディエーターと新作のホラーADVの展示でした。
    キャラかわいいっすよね!


    【ノナプルナインさん】
    いつものようにすごい豪華なノナプルさんのブース。
    グッズとかもすごくよくできてる!


    【6th Sense Gamesさん】
    イノウノカルテを開発している6th sense gamesさんのブース。
    あと少しで完成?なのか!?
    とても面白そうな作品。


    【Room6さん】
    Rouge with Deadでぶいぶい言わせているRoom6さんのブースですね。

    めっちゃカメラ目線頂きましたが、ぼかしときますね!


    【G-Modeさん】
    OUや空気読みで有名なG-MODEさんのブース。
    OUを全面に出してますね!



    ということで、今回も元気にデジゲーいってまいりました。
    来年は80人の飲み会したいですね!

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Riderでフィールド名を変更すると自動でFormerlySerializedAs属性が付く 

    こんにちは。
    大坂です。

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

    PV:


    Riderでシリアル化されたフィールド名を変更すると自動で「FormerlySerializedAs」属性が付くんですよね。
    まぁ便利といえば便利なんでしょうけど、自動で付けてほしくない人もいますかね?

    設定で自動で付かないようにできるみたいなので紹介。
    [設定]-[言語 & フレームワーク]-[Unity エンジン]の中にある「シリアル化されたフィールドの名前を変更する時は 'FormerlySerializedAs' を追加する」をオフにしたら付かなくなります。


    自動でついた付いた「FormerlySerializedAs」属性を消したりする人は機能を切っておくといいと思います。
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0