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

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

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

     

    【ハルシオンブログ】visual studioのブックマーク機能 

    こんにちは。
    大坂です。

    今日は木曜日でしたね。
    なんか水曜日だと思ってましたorz

    さて今週ですが、visual studioのブックマーク機能についてです。
    機能自体知ったのが最近ですが、地味に便利ですかね?

    ブックマークを付けたい行で「Ctrl+B」、「Ctrl+T」と押すとブックマークが設定されます。


    なんかそれっぽいマークが付きますね。
    で、他のコードや行にもブックマークを付けて
    「Ctrl+B」、「Ctrl+N」で次のブックマーク、「Ctrl+B」、「Ctrl+P」で前のブックマークに移動できます。


    大体同じコードなのでわかりにくいですがちゃんと移動できていますね。
    この機能を使うとコードを追っている時なんかに少し便利です。
    ただ使い終わった時に「Ctrl+B」、「Ctrl+C」を押して一括で全部削除しておかないと、次使用するときに混ざってしまうので終わったら消しておくのがいいかと思います。

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

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unity+Playfabのランキングについて(後半) 

    今日は関東でも雪が降るかも?って話ですね。
    寒い寒い坂内っす。

    さてさてUnity+Playfabでランキングを作りたい後半。
    前回はこちら

    統計情報にデータを入れるところまでやりました。


    今回はランキングとして登録されているものをとってくるところです。

    ランキングの取り方には2種類あります。

    ①トップランキング
     上位〇件のランキング
     
    ②自分周囲ランキング
     自分の周囲〇件ランキング
     
    ※①②ともに、同時に取得できる件数は100件?なんかそんな制限はあるようです。

    ①トップランキング

    public IEnumerator GetTop100Ranking() {
    bool isWait = true;
    var request = new GetLeaderboardRequest {
    StatisticName = "ranking_get_point",
    MaxResultsCount = 100
    };
    PlayFabClientAPI.GetLeaderboard(request, OnSuccess, OnError);

    while(isWait) {
    yield return null;
    }

    yield return retRankingDatas;

    void OnSuccess(GetLeaderboardResult result) {
    Debug.Log("トップ100ランキング:OnSuccess");
    foreach(var item in result.Leaderboard) {
    Debug.Log((item.Position + 1) + "位:" + item.DisplayName + "さん " + item.StatValue + "ポイント");
    }
    isWait = false;
    }

    void OnError(PlayFabError error) {
    Debug.Log("トップ100ランキング:OnError");
    Debug.Log(error.GenerateErrorReport());
    isWait = false;
    }
    }


    これでトップ100のデータをもってこれます。

    ②自分の周囲ランキング
    GetLeaderboardRequestをGetLeaderboardAroundPlayerRequestに変えることで、自分の周辺ランキングをもってこれます。


    public IEnumerator GetMyAroundRanking() {
    bool isWait = true;
    var request = new GetLeaderboardAroundPlayerRequest {
    StatisticName = "ranking_get_point",
    MaxResultsCount = 25 * 2 + 1
    };
    PlayFabClientAPI.GetLeaderboardAroundPlayer(request, OnSuccess, OnError);

    while(isWait) {
    yield return null;
    }

    yield return retRankingDatas;

    void OnSuccess(GetLeaderboardAroundPlayerResult result) {
    Debug.Log("自分の周辺ランキング:OnSuccess");
    foreach(var item in result.Leaderboard) {
    Debug.Log((item.Position + 1) + "位:" + item.DisplayName + "さん " + item.StatValue + "ポイント");
    }
    isWait = false;
    }

    void OnError(PlayFabError error) {
    Debug.Log("自分の周辺ランキング:OnError");
    Debug.Log(error.GenerateErrorReport());
    isWait = false;
    }
    }



    取得する件数は MaxResultsCountになります。
    自分を含め周辺何件かという計算になるので、今回は前後25件+1件(自分)をとってくるようにしています。

    こんな感じで簡単にランキングを作ることが可能です。








    ただし!ここはだめだというところがあります。
    この問題が大きすぎてPlayfabのランキングが使えるのか使えないかがはっきり分かれるところ。

    基本的にとってこれる情報が上記コードのDebugのところのデータのみ。

    名前、順位、バリューだけなんです。


    よって、ランキングで各ユーザの持っている他の情報(例えば選択しているキャラ、ほかのポイント、LVとか装備とか)を出したくても取ってくることができないらしいです。(※MSjpさん情報によると)

    さすがに順位と名前だけのランキングって・・・・まぁゲームによってはそれだけでもいいかもしれませんけど。
    ほかの情報もランキングの一覧表に出したりする場合はPlayfabのランキングではきつそうなので、気を付けてください。
    10件くらいのランキングなら、とってきたユーザIDから各ユーザのデータを持ってくることは可能ですけど。
    100件とかのランキングだとアクセス過多で通信料増えそうですしね・・・・
    本当ならば、CloudScriptを1回呼べば、その中で各ユーザの情報持ってきたりできそうですが、1CloudScriptからのAPI呼び出し回数が決められているらしいので、それもきつそうです。

    と、いうことで、Unity+Playfabのランキングでした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】enumでビット演算したかった 

    こんにちは。
    大坂です。

    しばらく天気が悪いみたいですね。
    今日からお出かけが続くので雨は降らないでほしいのですが。。

    さて今週もenum系のお話。
    enum使用してビット演算的なことをして1個の変数に複数持たせられるようにしたかったんですよね。
    まぁなんのこっちゃって話なのでこんな感じです。
        
    [Flags]
    enum TestEnum
    {
    Test_1 = 1,
    Test_2 = 2,
    Test_3 = 4,
    Test_4 = 8,
    Test_5 = 16,
    }

    private void Start()
    {
    TestMethod();
    }

    private void TestMethod()
    {
    TestEnum test = TestEnum.Test_1 | TestEnum.Test_4;
    Debug.Log(test);
    }


    enumに[Flags]アトリビュートを付けて、ビットの値を持たせるところがポイントですかね。
    これで変数「test」に「TestEnum.Test_1」と「TestEnum.Test_4」が入るよってお話です。
    結果。


    ということでこんなことがやりたい時があればご参考に。
    ではまたノシ

    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    追記 コメントでビットシフトのほうがわかりやすいので好きですねーとありましたので、
    そちらのほうが良い方はこういう感じにするといいみたいです。

        
    [Flags]
    enum TestEnum
    {
    Test_1 = 1 << 0,
    Test_2 = 1 << 1,
    Test_3 = 1 << 2,
    Test_4 = 1 << 3,
    Test_5 = 1 << 4,
    }

    Category: 開発日記(Unity)

    tb 0 : cm 2   

    【ハルシオンブログ】京都に1泊遊びにいってきたよ。Playfabを使ったランキング(前編) 

    おはようございます。坂内っす。
    先週金曜~土曜にかけ、とあるアプリのリリース打ち上げということで、京都にいってきました。




    ゲームを作っているとこんなこともあるらしいです。
    上のツイートは京都で北海道肉が食えるっていうお店なんですけどね・・・・・あ、北海道今年こそ行こう!

    京都行ったので、某あるみさん(@Dies_Irae9999)のカフェにもお邪魔してきましたよぅ




    美味しかった!
    京都嵐山に行った際にはぜひ!

    では、Unityのお話。

    Unity+Playfabでランキングを作りたい!前編!

    Playfabでランキングを作る際にはPlayfabにはじめから用意されているランキング機能を使うと簡単にできますよ!
    ※ただし、ランク・名前・バリューの3種類しかもってこれません。

    ①ランキングを作成する


     統計情報名:ランキング名
     リセット頻度:ランキングをリセットするタイミング
      

     集計方法:ランキングデータを投げた際にどのように更新するかの設定
      
      
     例)1試合後の取得ポイントを加算していき、任意のタイミングでのみリセットする形のランキングを作る場合。
       統計情報名:ranking_get_point
       リセット頻度:手動
       集計方法:合計
       
    ②ランキングに値を投げる。
     流れ的には、自分(各ユーザ個人)の統計情報と呼ばれるデータを更新することで、Playfab側がそれをかき集めてランキングにしている感じぽいです。
      以下は3ポイントを加算していく形になっちゃうので、適当に変数等で値を渡してね。
     

    bool isWait = true;

    UpdatePlayerStatisticsRequest request = new UpdatePlayerStatisticsRequest() {
    Statistics = new List {
    new StatisticUpdate{ StatisticName = "ranking_get_point", Value = 3 },
    }
    };
    PlayFabClientAPI.UpdatePlayerStatistics(request, OnSuccess, OnError);

    while(isWait) {
    yield return null;
    }

    void OnSuccess(UpdatePlayerStatisticsResult result) {
    isWait = false;
    }

    void OnError(PlayFabError error) {
    isWait = false;
    }




    とりあえずこれで、各ユーザの統計情報をPlayfab側に投げることができます。

    それでは次回は後半、ランキングを取得する方法について書いていこうと思います。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Visual Studioでenumを条件に使ったswichを書くときに便利な方法2。 

    こんにちは。
    大坂です。

    さて、以前こんな記事を書いたのですが、
    【ハルシオンブログ】Visual Studioでenumを条件に使ったswichを書くときに便利な方法。


    この方法でもいいのですが何となく勢いで書いてしまうので慣れなかった・・
    別でもできるがあるのでそちらの紹介。

    switch分を書いて、switchのところで「Ctrl」+「.」を押して、「欠落しているケースの追加」を選択する。
    こんな感じになります。


    ショートカットいっぱい押すのが面倒な人はクイックアクションとリファクタリングのショートカットが「Ctrl」+「.」なので、
    右クリックして、クイックアクションとリファクタリングを選択する感じですね。


    自分はこちらがあっていました。
    以前のブログと合う方を使ってみてください。

    それではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】UnityのApplicationの紹介。アプリのバージョンをとったりできますよね。 

    こんにちは、坂内です。

    今年は雪が少ないんですかね?全然降りませんね。
    全国的に雪少ないぽいですが。
    スキー場とかも雪なくて滑れないとかっての結構あるぽいっす。

    さてUnityのお話。

    コードでアプリのバージョンが簡単に取れます。
    こんな感じ


    Debug.Log(Application.version);


    このApplicationって実は色々な情報をもっています。

    詳しくはこちらのリファレンスを見てみてね。
    https://docs.unity3d.com/ja/2017.4/ScriptReference/Application.html


    まぁそんな使うのはないかな・・・・

    AndroidのBackキーでアプリを終了させる時なんかに、Quit使ったりするくらいなのかな?

    あとはpersistentDataPath。

    https://docs.unity3d.com/ja/2017.4/ScriptReference/Application-persistentDataPath.html

    情報等をローカルに保存するときのパスによく使いますよね。
    セーブデータをJSONにしたりして保存とか。

    ほかにもApplicationには使えるものがあるかもしれません

    ってことで、今日はUnityのApplicationの紹介でした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】TextMeshProで途中の文字のFontを変えたい時 

    明けましておめでとうございます!
    今年もよろしくお願いいたします。

    さて今年もブログを続けていきます。

    TextMeshProで1個のテキストで途中からフォントを変えたいときなんかがありますかね?
    僕はたまにあります。
    そういうときはFontタグ使ってやろうねというお話です。
    こんな感じです。
        
    public TMP_Text text;

    private void Start()
    {
    int i = 100;
    text.text = $"変更前:{i} 変更後:<font=\"TestFont SDF\">{i}";
    }


    結果。


    あ、あとFontタグにmaterialを指定してmaterialも変更することもできます。
        
    public TMP_Text text;

    private void Start()
    {
    int i = 100;
    text.text = $"変更前:{i} 変更後:<font=\"TestFont SDF\" material=\"TestFont SDF_BOutline\">{i}";
    }


    こちらも結果。ちょっとわかりにくいですが、変更後の数字に黒いアウトラインが入ってますね。


    注意点としては、Fontタグで変更する場合は
    「Assets/TextMesh Pro/Resources/Fonts & Materials」
    にフォントアセットとマテリアルを入れないといけません。



    それでは改めて今年もよろしくお願いいたしますm(_ _)m
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】新年の挨拶と今年の抱負 by坂内 

    あけましておめでとうございます。
    本年もハルシオンシステムをよろしくお願いいたします。

    今年の抱負は『ガンバって生きる~儲ける』です。

    坂内です。


    儲けたい!
    金くれ!

    制作途中のRPGに少しでも触っていきたいですね。

    また、簡単なゲームの1つや2つも作れたらいいなーと思っております。

    イカくん2でもつくろうかしら。


    ということで、今年1発目のブログは終わり!
    あでゅ~ノシ

    Category: その他日記

    tb 0 : cm 0