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

     

    【ハルシオンブログ】Unity 条件式の時に書く|| と | の違い。論理演算子と条件付き論理演算子 

    こんにちは。ハルシオンシステムの坂内っす。

    ポケガ3では着せ替えシステムに変更が入ってまして、トップスとボトムスで好きな服を組み合わせることができるようになっています。
    また、アクセサリもいくつかつけて着飾れるようになっています。
    ポケガ1,2よりもちょっと進化していますので、お楽しみに!

    UnityというよりC#の話。
    条件式を書くときに「||」って使いますよね。
    or
    の論理演算子です。


    int a = 0;
    int b = 1;
    if(a == 0 || b == 2){
    Debug.Log("あたり");
    }


    こんな感じで使ったりしますよね。

    「aが0 or bが2の場合"あたり"を表示」
    こんな感じのコードになっています。

    「|」こんな演算子があるのも知ってますか?

    パイプ1個の演算子です。

    これも同じようにこんな感じで使うことができます。


    int a = 0;
    int b = 1;
    if(a == 0 | b == 2){
    Debug.Log("あたり");
    }


    結果は同じで"あたり"を表示します。

    この2つの違いはなんでしょうか?




    「||」は演算子の前の項目がtrueになると、あとの項目は処理しない。というものです。

    例えばこんなコードの場合


    int ViewNum(int num){
    Debug.Log(num);
    return num;
    }

    ・・・
    int a = 0;
    int b = 1;
    if(ViewNum(a) == 0 || ViewNum(b) == 5){
    Debug.Log("あたり");
    }



    ログにでるのは、

    0
    あたり

    の2行だけです。

    ||のあとの1は表示されません。

    or演算子なので、「||の前または、あとがtrueならばifの条件の中に入る」という条件式になっており、||の前がtrueなので||のあとは見ないといった処理になっています。

    | を使った場合はこうなります。


    int ViewNum(int num){
    Debug.Log(num);
    return num;
    }

    ・・・
    int a = 0;
    int b = 1;
    if(ViewNum(a) == 0 | ViewNum(b) == 5){
    Debug.Log("あたり");
    }



    0
    1
    あたり

    |演算子の場合は、|のあとも処理を行います。

    &&と& も同じです。
    &&の場合は前がfalseだった時点でifの外に出てしまい、&&のあとは処理されません。

    「||」は条件付き論理OR演算子、「|」は論理OR演算子と呼ばれるらしいです。

    あんまりゲームを作ってきて使い分けをしたことないですが、こんな違いがあるということを知っておくといいかもしれません。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】複数のオブジェクトの内容を見たり編集したいとき 

    こんにちは。
    大坂です。

    複数のオブジェクトの内容を見たり編集したいときにInspectorを2個開いて1個をロックしてやってたりしましたが、
    Unity2020からオブジェクトを右クリックしてPropertiesで開くと複数見たり、編集が楽になります。


    複数開くとこんな感じ。


    内容を見比べたり、合わせるときなんかに便利ですね。
    では今週もこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】null許容型って使ってますか?全然使ってなかったけど、実は使えたりする?? 

    こんにちは。坂内っす。

    ええ ポケガ3少しずつ進んでます。
    何かしらお見せできればいいのですが・・・・もうちょっとお待ちください。

    さてさて、UnityでNull許容型って使ってますか?
    なかなか使う機会がなく、使ってないのですが、実は使える場所いっぱいあったのでないか?と思ってきました。

    Null許容型ってこんなのです。

    int?

    このintに値が入っているのか、nullなのかを判定するにはHasValueを使います。


    using UnityEngine;

    public class Blog20220124 : MonoBehaviour
    {
    void Start()
    {
    int? aaa = null;
    Debug.Log(aaa.HasValue);

    aaa = 5;
    Debug.Log(aaa.HasValue);
    }
    }



    結果はこのようになります。

    False

    True

    値がnullだった場合はFalseが取れますね。

    「値がnullだったら何もしない。値が入っていたら値x10をする」とかって処理ができますね。

    ということで、null許容型の簡単な説明でした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Hierarchyでオブジェクトの階層を一気に開きたいとき 

    こんにちは。
    大坂です。

    Hierarchyでオブジェクトの階層を開いていくときに普通にクリックしると1個1個開かれていきますよね。
    【1個1個クリック】


    これ「Alt+クリック」で一気に開けるんですね。
    【Alt+クリック】


    全部開きたくないときもあるかもしれませんが、何気に便利ですね。
    ではまたノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】Unity objectってなんでもはいるんですね!からの()キャストとas演算子について簡単基本的メモ 

    こんにちは。坂内っす。

    さて今年も頑張って生きていきましょう!

    ポケガ3は早ければ6月ころにリリースになるかもしれません。
    頑張って作っていきます!

    さて、Unityの小ネタ。

    objectは何でも入れることができますね。(そりゃ一番親ですから


    using UnityEngine;

    public class Blog20220117 : MonoBehaviour
    {
    public class B {
    public int no;
    public string name;

    public B(int value1, string value2) {
    no = value1;
    name = value2;
    }
    }

    void Start()
    {
    object obj;
    obj = 5;
    Debug.Log(obj);
    obj = "あいう";
    Debug.Log(obj);
    obj = new B(10, "なまえ");
    Debug.Log(((B)obj).no + ":" + ((B)obj).name);
    }
    }



    objから取り出す時にintもstringもキャストはいらないが(プリミティブ)、作ったクラスはキャストが必要ですね。

    ちなみに()のキャストと、as演算子がありますが、プリミティブ型にはas演算子は使えません。


    void Start()
    {
    int a = 100;
    double b = a;
    Debug.Log(b);

    a = b;
    Debug.Log(a);
    }



    a = b;
    でエラーになりますね。

    なんのエラーかというと、
    「桁数が大きいものから、小さい物への変換は桁落ちが起きるので、明示的に桁落ちしてもいいよというキャストが必要」
    といったものぽいです。

    明示的にキャストをしてやれば入ります。


    void Start()
    {
    int a = 100;
    double b = a;
    Debug.Log(b);

    a = (int)b;
    Debug.Log(a);
    }



    プリミティブのas演算子もだめです。

    a = b as int;   X

    本当にメモ的なもので、あんまり困ることではないですが、基本のことなので覚えておきましょ。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Swichって型で分岐できるんですね。 

    こんにちは。
    大坂です。

    Swichって型で分岐できるんですね。
    知らなかったです。(使うかはわかりませんが)

    public void TestMethod(object obj) {
    switch (obj) {
    case int:
    break;
    case string:
    break;
    case GameObject:
    break;
    }
    }

    エラーがでたらpreview版にアップグレードしてあげたら使えます。




    短いですがこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】VisualStudioで定義に先に飛ばずに定義の内容を確認したいとき 

    明けましておめでとうございます。
    今年もハルシオンブログをよろしくお願いします。

    ということで新年一発目のブログです。

    では早速。
    VisualStudioで関数でF12を押したり、Ctrl+クリックすると定義の場所に飛べますよね。
    それでもいいのですが、今見ているコードのその場で定義を確認する方法があります。

    関数でAlt+F12を押すか、右クリックして「定義をここにクイック表示する」を選択。


    こんな感じで見ているコードの下に定義が表示されます。


    ちょっと確認したいときなんかに便利ですね。

    ではではこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0