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やらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】C# その年の第何週かを求めたいとき 

    こんにちは。
    大坂です。

    その年の第何週かを求めたいときがあったのでAPIの紹介です。
    使うのは「System.Globalization」の「Calendar.GetWeekOfYear」メソッド。
    APIの説明はこちら

    今回はその年の最初の月曜日が第1週となるような取得の仕方です。

    void Start() {
    DateTimeFormatInfo format = DateTimeFormatInfo.CurrentInfo;
    Calendar cal = format.Calendar;
    Debug.Log($"2019/12/31(Tue) {cal.GetWeekOfYear(new DateTime(2019, 12, 31), CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)}週目");
    Debug.Log($"2020/1/5(Wed) {cal.GetWeekOfYear(new DateTime(2020, 1, 1), CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)}週目");
    Debug.Log($"2020/1/5(Sun) {cal.GetWeekOfYear(new DateTime(2020, 1, 5), CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)}週目");
    Debug.Log($"2020/1/6(Mon) {cal.GetWeekOfYear(new DateTime(2020, 1, 6), CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)}週目");
    }




    ちゃんと期待した結果が得られていますね。
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】先週はまったUnity2020+Firebaseを入れてみたメモ。めんどくさいっす・・・IOSはさらにめんどくさいって噂も・・・ 

    こんにちは。坂内です。

    少し涼しくなってきた感じでしょうかね。
    そろそろ飲みに行きたいです。はい。

    先週ちょっとUnity2020+FirebaseのAndroidビルドを試そうとしたらどん詰まりしつつ、なんとか動くところまでもっていけたので、それについてちょっとメモを。

    では順番にやっていきましょう。

    ①FirebaseにUnityのプロジェクトを登録します。

    ②Firebaseのプロジェクトのページから、「google-services.json」をダウンロードし、Assetsの直下に置きます。
    ]

    ③UnityにFirebaseのAPIを入れます。
    ここで落とせるらしいです。

    https://firebase.google.com/docs/analytics/unity/start?hl=ja

    落としたファイルを解凍し、次のをインポートします。



    インポートが終わると、こんなのがでました。

    よくわからんから、Add Selected Registriesを押します。


    こんなのもでたけど、これもよくわからないから Apply

    この辺全部終わると、Plugins>AndroidフォルダにResolverが勝手にdllとかaarとかをたんまり用意してくれます。


    さて、これでFirebaseが入ったので、ビルドをしましょう・・・・・

    ④コードを追加する
    https://firebase.google.com/docs/unity/setup?hl=ja

    ここに書いているように、SDKを最新にするためのコードがあります。

    Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
    var dependencyStatus = task.Result;
    if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
    // app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
    } else {
    UnityEngine.Debug.LogError(System.String.Format(
    "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
    }
    });


    これをプロジェクトの初めに書くらしいです。

    ⑤④の後にイベントを投げるコードを書いてみます。
    以下のコードをどこかに追加してみます。
    起動時に使うと想定されているのかわかりませんが、Loginとイベントがはじめから用意されています。
    これを使ってみましょう。


    Firebase.Analytics.FirebaseAnalytics.LogEvent(Firebase.Analytics.FirebaseAnalytics.EventLogin);



    ⑥ビルドをしてみます。
    ビルド自体はちゃんと通るのですが、実行エラーが出てますね。



    Failed to read Firebase options from the app's resources. Either make sure google-services.json is included in your build or specify options explicitly.

    これね。

    色々調べた結果、このページについた。
    https://firebase.googleblog.com/2020/08/firebase-compatibility-with-unity-20201.html

    なんかバグってるらしい?
    とりあえず以下のことをすることで回避はできるらしい。

    まずはmainTemplate.gradleとgradleTemplate.propertiesを使えるようにする。


    ProjectSettingの2個のチェックをつける。
    これをすることで、Assets>Plugins>Androidの中に各ファイルが作られます。


    ①mainTemplate.gradleのファイルに手を加える。
     mainTemplate.gradleを開き、一番下にこれを加えます。
     

     android {
    sourceSets {
    main {
    def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
    res.srcDirs += (unityProjectPath + '/Assets/Plugins/Android/Firebase/res/values/google-services.xml')
    }
    }
    }


    ②gradleTemplate.propertiesのファイルに手を加える。
     gradleTemplate.propertiesの一番したにこれを加えます。
     

     android.useAndroidX = true
    android.enableJetifier = true


    さて、これで完了です。

    ビルドをしてみましょう。

    エラーがでますよね・・・・・

    ここで大事なのが、Unity再起動!!!


    これで完成です!

    エラーがでないでイベントログまで投げれますね!!

    すんごいはまりました。

    それもUnity2020だと特殊なことをしないといけないとか・・・・


    こんな感じでFirebase使えそうなので、素敵なFirebaseライフを!
    (そのうちIOSの方でもまたはまりそうだけど・・・)

    あ、何か間違えているとか、いい方法あったり、Firebase以外でいいのがあるなら教えてくださいね!


    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unity起動すると毎回IAPの更新が来るけど更新したくないしうざい時 

    こんにちは。
    大坂です。

    なんかUnity立ち上げるとIAPの更新が出てきてうざいなーってなった時のお話。
    毎回毎回こんなのが出てくる。



    なんかデフォルトだと自動更新チェックがONなっているようなのでこれをOFFにしてあげれば出てこなくなります。
    [Window]-[Unity IAP]-[IAP Updates...]の「Automatically Check for Updates」のチェックを外します。


    このウィンドウが出てくる


    これで出なくなりますね!
    更新してもいい場合は更新してしまえばいいのですけどね。

    それでは今週もこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】UnityでSerializeFieldって使ってますか?privateなのにインスペクタから設定したりアサインできたりっするやつです 

    こんにちは。坂内です。

    台風でかいっすね。
    九州、四国のみなさん気を付けてくださいな。

    Unityで「SerializeField」って使っていますか?

    使い方は以下です。


    public class Blog20200907 : MonoBehaviour {

    [SerializeField] int number = 0;
    [SerializeField] int score = 10;
    }


    これを書くことによって「privateだけど、Unityのインスペクターに表示する」が可能になります。



    詳しくはこちらを参考してください
    https://docs.unity3d.com/ja/current/Manual/script-Serialization.html


    他のコードからはPublicではないので、呼ぶことはできません。

    ボタンなどにコードから処理を追加するときなどは、他からそのボタンを呼ぶ必要がない限り、SerializeFieldを使うといいかと思います。

    例)ボタンにアクションを追加

    public class Blog20200907 : MonoBehaviour {

    [SerializeField] Button btnAction;

    private void Start() {
    btnAction.onClick.AddListener(OnClickButton);
    }

    void OnClickButton() {
    Debug.Log("OnClickButton");
    }
    }


    こんな感じ。

    無駄にPublicにしないのは大事だと思うので、使ってなかった方はぜひ使ってみてくださいな。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Colorを16進数に変換したいとき 

    こんにちは。
    大坂です。

    以前16進数をColorに変更する記事を書きましたが、これって逆もできたんですね。
    【Unity】16進数の色をColorで返してくれるのなんてあるんすね。

    ColorUtilityのToHtmlStringRGBやToHtmlStringRGBAといったのがあるようですね。

    こんな感じColorを指定するだけです。

    void Start() {
    Debug.Log(ColorUtility.ToHtmlStringRGB(Color.red));
    Debug.Log(ColorUtility.ToHtmlStringRGBA(Color.red));
    }

    実行結果


    ちゃんと16進数に変換してくれますね。
    ちょっと使いた時があったで使ったので紹介でした。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0