FC2ブログ
    05 «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.» 07

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

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

     

    【ハルシオンブログ】C#6で使用できる文字列挿入 

    こんにちは。大坂です。

    今日明日あたりは台風になりそうなでならないやつが来るみたいです。
    お出かけする人はしっかり確認したほうが良さそうです。

    さて、今週は文字列挿入周りです。
    最近Unity2019.1.4を使っているのですが、いつの間にかデフォルトでC#6が使える設定のようで。
    文字列挿入についてはいつもstring.Formatを使っていました。
        string str1 = "abc";
    string str2 = "fg";
    Debug.Log(string.Format("{0}de{1}", str1, str2));

    これがC#6ではこうかけるようになります。
        string str1 = "abc";
    string str2 = "fg";
    Debug.Log($"{str1}de{str2}");

    そして何が便利ってこの形式だと式も使えます。
        string str1 = "abc";
    string str2 = "fg";
    string str3 = "hij";
    int ran = Random.Range(0, 2);
    Debug.Log($"{str1}de{(ran == 0 ? str2 : str3)}");

    ということでちょっと便利な文字列挿入ができるよって話でした。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Photonと仲良くなりたいんだけど・・・・ プレイヤー毎のサーバ変数的なもの。これでサーバ側にユーザの情報が持てる!? 

    月曜になっちゃいました。
    こんにちは、坂内です。

    なんか最近また地震が増えてきたような感じがしますね。
    みなさんご注意ください。
    地震といえば、東日本大震災の時は20何階のビルで仕事をしていて、6時間くらいかけて歩いて帰ったものです。
    めっさ揺れた・・・・

    またPhotonの話ね。
    サーバ側にもつ各ユーザの情報はカスタムプロパティで持たせるらしいですね。


    【設定】

    var properties = new ExitGames.Client.Photon.Hashtable();
    properties.Add("player-id", photonView.OwnerActorNr);
    properties.Add("isDeath", false);
    properties.Add("state", "ready");
    PhotonNetwork.LocalPlayer.SetCustomProperties(properties);


    こんな感じのを各ユーザがやると設定できるぽいっす。

    【取得】

    foreach(var p in PhotonNetwork.PlayerList) {
    Debug.Log(p.CustomProperties["player-id"]);
    Debug.Log(p.CustomProperties["isDeath"]);
    Debug.Log(p.CustomProperties["state"]);
    }


    こんなので取れるぽいっすよ。

    あんまり書く内容がないっす。

    もう少しPhotonと仲良くなってきますね。

    それじゃ あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンシステム】複数のオプション引数で後ろの引数だけに値を渡したいとき 

    こんにちは。
    大坂です。

    こちらの記事でもオプション引数についてちょっと触れていますが、
    【ハルシオンブログ】今週もちょこちょことC#の話・・・
    複数のオプション引数を指定して、後ろの方の引数にだけ値を渡したいときがあると思いますがその方法。

    まずは普通に複数のオプション引数を呼び出したとき。
        void Start() {
    Test();
    }

    public void Test(int a = 1, int b = 2, int c = 3) {
    Debug.Log("a:" + a);
    Debug.Log("b:" + b);
    Debug.Log("c:" + c);
    }
    呼び出し側では何も指定しないで呼び出せますね。(前の記事の内容と同じですが)


    次にbだけ違う値にしたいときはこんな感じで書けます。
        void Start() {
    Test(b: 10);
    }

    public void Test(int a = 1, int b = 2, int c = 3) {
    Debug.Log("a:" + a);
    Debug.Log("b:" + b);
    Debug.Log("c:" + c);
    }
    引数を渡すときに「b: 10」としてあげるだけです。


    ちゃんとbの値が変わりますね。
    複数のオプション引数でも特定の場所に値を渡せるので便利ですね!

    では今週もこれにてノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】最近Photon触りだしたんだけど、難しいんですよ?だれかしっかり教えてちょんまげ! 

    こんにちは。坂内っす。

    久しぶりにGooglePlayで「育成 少女」で検索。
    あら、まだ2位3位じゃない。




    なんでこんなにダウンロード少ないの!?

    たしかに「育成」だけだと43位くらいだけどさ・・・


    さて、Unityの話題。

    最近Photon触ってるんですが、ほんと難しいですね。

    何が難しいかって?



    こんな感じで、キャラAとBがいて、物体Cがあるとします。

    AとBはキャラクターで自由にそれぞれが動き、物体CにぶつかったらA,Bそれぞれがカウントする。
    みたいな感じだった場合。
    どうすればいいんでしょうか?


    public void OnCollisionEnter(Collision collision) {
    if(collision.gameObject.tag == "WallC") {
    if(!photonView.IsMine) {
    return;
    }
    count++;
    }
    }

    public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) {
    if (stream.IsWriting) {
    stream.SendNext(count);
    } else {
    count = (int)stream.ReceiveNext();
    }
    }


    こんな感じ?
    これでUIの方でA、Bキャラのcountを表示してやればいいのかな?

    弾をお互いうって、当たった時とかも、同じ感じでやればいいのかな?

    撃った側で判定するのか、受けた側で判定するのかどちらもデメリットはあるようだけど、そこはうまくできないんだろうか・・・・

    まだまだPhoton触ったばかりだけど、めっちゃめんどいというか、混乱するんですよね・・・・まじでPhotonマスターおしえてー!!!


    ってことであでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】floatの比較は気をつけようね? 

    こんにちは。
    大坂です。

    さて今週も小ネタです!

    floatの比較をしてあれ?同じなのにtrueにならない!なんてことがたまーにありませんか?
    こんな感じでやると結果がfalseになります。
    float test_1 = 1.0f;
    float test_2 = 0f;
    for(int i = 0; i < 10; i++) {
    test_2 += 0.1f;
    }
    Debug.Log(test_1 == test_2);


    floatの比較をするときは「Mathf.Approximately」を使用するのがいいようです。
    Debugのところだけ変更して実行すると。
    Debug.Log(Mathf.Approximately(test_1, test_2));


    ちゃんとtrueになりますね!
    ということで、floatの比較には「Mathf.Approximately」を使うのがいいよって話でした。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】基本の基本ですが、stringのSplitで複数文字を使った分割の方法。(簡単な内容ですいませんorz) 

    こんにちは。坂内です。

    最近UnityでJSONをCSVに書き換える的なことをやった時に、そういえばどうやるんだっけ?となったことをメモ。

    ちなみにC#でJSON->CSV変換って簡単にやる方法あるんですかね?

    なんか見つからなかったからコードでごりごりやっちゃいました。


    stringのsplitをやる際に、2文字以上の文字列で分割ってそのままじゃできませんよね。
    Splitの引数ってChar型です。

    そんな場合は、こうやれば複数文字での分割ができます。



    string baseStr = "aaabbbccc";
    string[] splitStr = {"ab"};

    string[] strAry = baseStr.Split(splitStr, System.StringSplitOptions.None);
    Debug.Log(strAry[0] + "/" + strAry[1]);



    結果としては、「aa/bbccc」となります。

    また、複数の単独文字で分割する場合は、以下のようにするといいようです。



    string baseStr = "aaaxcczc";
    char[] splitStr = {'x', 'z'};

    string[] strAry = baseStr.Split(splitStr);
    Debug.Log(strAry[0] + "/" + strAry[1] + "/" + strAry[2]);



    結果としては、「aaa/cc/c」となります。

    ということで、簡単なstringのSplitについてでした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】ProjectのスクリプトとかがHierarchyにあるシーンのどこにあるか簡単に探す方法 

    こんにちは。
    大坂です。

    以前こんな記事を書いていますが、似たようなやつというかだいたい一緒。
    【ハルシオンブログ】HierarchyでスクリプトがどのGameObjectに付いてるか知りたかった

    こんな方法でもできますよというだけです。
    Projectの探したいスクリプトやプレハブを右クリックして、「Find References In Scene」を選択するだけです。




    解除するときは「ref:~」を消すか、端っこにある×を押せば解除できます。

    画像ファイルとかも探せるのでぱっと探したいときには便利ですね。
    もちろんシーンをHierarchyにおいていないとだめですが。

    ではではまたですノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Bitsummit2019に行ってきたんだよーう! 

    はい、こんにちは。坂内っす。

    (月曜にブログを書こうと思ったら、間違えてスマホの写真フォルダを全消ししてようやく復旧しました)

    先週土曜日曜と、Bitsummit行ってきましたよ。

    毎年いってますが、いついっても凄いゲームばかりですよねー

    最近では珍しくイベントで名刺も20枚ほどなくなりました、いつも以上につながりができた良いイベントでしたな。

    いつものごとく、車でいってきましたよ。


    さてどどどーって写真だけ貼っていきますね!




    【Room6さんのブース】
    まずはRoom6さんのブース。
    お世話になっています!
    超水道さんの「Ghostpia」、ブラフマンさんの「ARTIFACT ADVENTERGAIDEN(AA外伝)」のパブリッシュ?をしていますね。
    あとはRoom6さんのオリジナル「サクラサケ」の展示をまさしさん本人が!







    【ところにょりさんのブース】
    新作「おわかれのほし」の展示ですね!




    あ、軽く挨拶だけしかしてなかった・・・・・

    【Seventh Rankさんのブース】
    来ましたね!AppStore1位の貫禄!
    かの「World for Two」のブースです!






    ほんま凄いゲームですよねー
    是非やってみてください!

    【八橋フォヌカポウさんのブース】
    「Ballistic Craft」の展示です。

    自分でショットを作って、それをつかい対戦ができるアクションと、まぁ素敵なゲームです!
    https://www.youtube.com/watch?time_continue=95&v=cTykLtUW-DA

    絶対面白いからやってみて!




    【Ske6さんのブース】

    「ことだま日記」タップ放置育成ゲームですね。

    可愛いキャラがいっぱいいるのでそういうの好きな方は是非!




    【西山さん(?)のブース】

    これもとてもよくできているパズルゲーム
    「パズル&モナーク」の展示です。




    【ニューロンエイジさんのブース】
    「Play Dog Play Tag」
    ビットサミットが始まるちょい前からTLなどで見かけたゲーム。
    対戦してみたが、なかなか楽しかったよ!






    そして、帰りの静岡でさわやか食べてきたーよ!






    今年のBitsummitも楽しかった!

    また来年も!!いくかもね!!!

    Category: その他日記

    tb 0 : cm 0