FC2ブログ
    04 «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.» 06

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

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

     

    【ハルシオンブログ】ファイルパスとかをstringに入れるとき 

    こんにちは。
    大坂です。

    さてはて、ファイルパスとかをStringに入れるときに「\」を重ねてエスケープさせるのは意外とめんどくさいですね。
    こんな書き方。
    string path = "C:\\test\\test.txt";
    でもこうすると重ねなくてもいいですねって話。
    string path = @"C:\test\test.txt";
    先頭に「@」を書くだけです。
    これで大丈夫になるので、簡単なミスがなくなったり可読性が少し上がりますね!たぶんきっと!

    すごい短いですがこれだけですよ。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】CanvasのScreenSpace-Cameraで使えるジョイスティックみつけたー!なので使ってみたっす。 

    こんにちは!坂内っす。

    今週末は京都でBitsummitです!
    また車で行ってきますね!

    さてUnityのお話。

    バーチャルジョイスティックを使おうと思って色々探していても、uGUIのCamera設定が「Screen Space - Camera」で使えるものがなかなかなくて、大体が「Screen Space - Overlay」対応のやつばかり。
    Overlayのやつの計算式変えればいいじゃない と思うかもしれませんが、めんどいからいやです。

    そんな中でScreenSpace-Cameraで使えるいいアセットがあったのでご紹介。

    【Joystick Pack】


    こちらです。

    使い方は簡単。

    ①インポートしたJoystickPackのPrefabsから使いたい種類のジョイスティックのプレハブをCanvasの中に置きます。




    ②ジョイスティックの効果範囲を決める。
     ①で置いたオブジェクトを選択すると、Sceneウインドウで画面をタップしたときにジョイスティックが出る範囲を選択できます。
     この範囲内だけでジョイスティックが作動します。


    ③コードでジョイスティックが動かされたのを取得
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class TestJoystick : MonoBehaviour
    {
    public DynamicJoystick joystick;

    private void Update() {
    float x;
    float z;
    x = joystick.Horizontal;
    z = joystick.Vertical;

    Debug.Log(x + ":" + z);
    }
    }


    こんな感じのコードでジョイスティックの動きをとることができます。




    ということで、簡単に使えるジョイスティックの紹介でした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】処理時間の計測するとき 

    こんにちは。
    大坂です。

    なんか日曜の気温が34度とかいってましたが、一気に夏になるんですかね。。

    さて、処理時間が気になって処理間の時間とか計るときって今までこんな感じで処理開始前の時間と処理終了後の時間を取ってました。
        Debug.Log(System.DateTime.Now);

    // 時間計りたい処理

    Debug.Log(System.DateTime.Now);
    まぁこれでもいいんですが、Stopwatchなんてクラスがあるんですね。
    行数増えますけどこんな感じで使えます。
        var sw = new System.Diagnostics.Stopwatch();
    // 計測開始
    sw.Start();

    // 時間計りたい処理

    // 計測終了
    sw.Stop();

    // 結果を返す(TimeSpan)
    System.TimeSpan ts = sw.Elapsed;
    Debug.Log("TimeSpan:" + ts.ToString());

    // 結果を返す(ミリ秒)
    long milliSec = sw.ElapsedMilliseconds;
    Debug.Log("ミリ秒:" + milliSec);
    TimeSpanとミリ秒で受け取れるようなのでお好みで。


    では今週もこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】UnityでプレハブからInstantiateする時に「プレハブ.transform」ってできたんですね。知りませんでした。 

    おはようございます。坂内っス。

    去年の12月にうちで作ってるRPGのスクショとかを出してから早半年・・・・
    進捗は・・・ほとんどありません!
    ほんとお金なくて、お仕事頂きながら生きています!
    なので、2019年内リリース予定ではなく、2020年リリース予定!

    とりあえず今年1年はお仕事で食べながら、すこーしずつクリエイティブ周りを作成。
    来年一気にどかーんと作っちゃう予定です。

    ほんと時間かかってすいませんorz
    楽しみにして頂いている方には申し訳なく・・・面白いゲームにしますんで、期待してお待ち頂ければと。


    さて、Unityのお話。

    最近知ったことのメモ。

    PrefabをInstantiateする時に、座標を指定するが、角度はPrefabのまま変えたくない場合、こんな書き方ができたんですね。


    Instantiate(プレハブ, position, プレハブ.transform.rotation);



    プレハブ.transform

    って取れるんだ!


    もちろん座標、角度がPrefabのままでいいのならば、


    Instantiate(プレハブ);



    だけでいいのですが、まさか角度のみをプレハブからとれたとは知りませんでした。


    というメモでした。


    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 1   

    【ハルシオンブログ】なんか今週もDictionaryのネタですよ。 

    こんにちは。大坂です。

    先週もDictionaryのことを書きましたが今週も引き続き。
    どうにも最近見る機会が多いのでス。

    今日は、存在しないKeyにアクセスしたときのお話。

    こんなのね。
        void Start() {
    Dictionary test = new Dictionary();
    Debug.Log(test[0]);
    }

    実行するとKeyNotFoundExceptionが発生します。

    しかしこれも、こんなAPIがあります。
    TryGetValue。
    使い方はこんな感じです。
        void Start() {
    Dictionary test = new Dictionary();
    string str = "test";
    test.TryGetValue(0, out str);
    Debug.Log(str);
    }

    これでエラーは出ないのですが、
    注意点としては上のコードだと変数「str」に初期値「test」を入れていますが、TryGetValueでは型の既定値が返されます。
    stringの場合は「""(空文字列)」、intの場合は「0」が返されます。
    TryGetValueの戻り値でboolを返してくれるのでそのへんで判断してもいいのかもしれません。

    まぁ・・・Keyがないのにアクセスすることがそんなにあるかはわかりませんが・・・。

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

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】UnityやってるときVisualStudioでコメントアウトどうやってます?ショートカット使うと凄い楽なんですよね。 

    こんにちは。坂内です。

    UnityというかVisualStudioで便利な機能の紹介。

    以前こんな記事を大坂が書きましたが、コメントアウトのショートカットって使ってますか?
    【ハルシオンブログ】VisualStudioでショートカットを変更したかった。


    めっさ便利ですが、使ったことない人多そうなので、紹介しますね。

    例えばこんなコード

        private void TestCode() {
    string aaaa = "";
    string bbbb = "";
    string cccc = "";

    int a = 100;
    int b = 10;
    int c = 20;

    if(a == 100) {
    aaaa = "100です";
    } else {
    aaaa = "100以外です";
    }
    if(b == 100 && c == 100) {
    bbbb = "bとcは100です";
    } else {
    bbbb = "bとcは100以外です";
    }

    Debug.Log(aaaa);
    Debug.Log(bbbb);
    }


    変数bbbbとccccをコメントアウト、bbbbとccccを使っているif文もコメントアウトをするとき、こんな感じにやりますよね。



    コメントのショートカットを使うとこんな感じでできます。



    だいぶ早くないですか?
    楽だと思うんですよねー

    コメントアウトしたい行を選択して(まとめて選択OK)、ショートカットキーを押すだけ。
    コメントを外すのも楽になるんですよ。




    どうです?

    ショートカット使ってなかった方は是非使ってみてください。

    僕はコメントアウト「CTRL+ALT+C」、コメント外し「CTRL+ALT+V」でやってます。

    是非試してみてね!

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Dictionaryでforeachするときって 

    GW明けてこんにちは。

    では早速今週も書いていきます。

    Dictionaryでforeachを回すときにKeyだけ取って回してました。
    こんなふうに。
        Dictionary test = new Dictionary() { { "key1", 1 }, { "key2", 2 }, { "key3", 3 } };
    foreach(string key in test.Keys) {
    Debug.Log(key + ":" + test[key]);
    }

    Keyを全部取ってそのKeyの値を持ってきてましたが、これ両方一気に取れんないのかな?と思って見たら普通にありますね・・・。

       Dictionary test = new Dictionary() { { "key1", 1 }, { "key2", 2 }, { "key3", 3 } };
    foreach(KeyValuePair pair in test) {
    Debug.Log(pair.Key + ":" + pair.Value);
    }

    なんとなくKey取って回すって感じで思ってたのでずっとそのままやってましたが、ちゃんと調べないとだめですねー。

    では今週もメモ的な感じですがこれにてノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】今作ってるトラップしにげーはこちら。というか、GW終わっちゃったじゃないか! 

    おはようございます!坂内です!
    皆さんGW如何過ごされましたか?
    僕は大体飲んでました。

    そうそう、GW後半にこんなツイートしましたが




    ゲーム画面はこちらです。



    いや、ほんとマジで、ステージ作りが進まない・・・・

    とりあえず、5面まで作ったらリリースしちゃうけどさ。

    あと2年はかかるかな?いやいや、今年中にだせるように頑張ります!

    あ、そうだ。
    Android版の2ステージバージョンですが、こちらに置いてますので、興味あった方遊んでくださいな。
    感想聞かせて頂ければ幸いです。

    https://drive.google.com/drive/folders/1pmayoQCTWOigBweRDF3iHTrbFVuUrz-q?usp=sharing

    さて、話は変わりますが、Unityで一時的に時間を止める場合、以下のような感じでやりますよね。

    Time.timeScale = 0f;


    この時「1秒間だけ時間を止めたい」とかって時には、以下のようにやるといいらしいですよ。

            Time.timeScale = 0f;
    float t = 0;
    while(t < 1f) {
    yield return null;
    t += Time.unscaledDeltaTime;
    }
    Time.timeScale = 1f;


    これで1秒止めれるらしいっす。

    なんか、unscaledDeltaTimeってtimeScaleに影響されないリアルタイムが取れるらしいっす。


    ってことで、本日はここまで!あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0