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

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

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

     

    【ハルシオンブログ】プロジェクトを開いたときにUnityHubが閉じなくなった。 

    こんにちは。
    大坂です。

    先日UnityHubをアップデートしたらプロジェクトを開いたときにUnityHubが閉じなくなりました。
    複数プロジェクトを開くことはあんまりないので邪魔だなぁと、思って設定を見たらちゃんとそういう設定があるんですね。

    UnityHubの設定ボタンを押して環境設定を開く。


    メニューの表示で「Unityエディターを開くときに、WindowsシステムトレイのHubを非表示にする」にチェックを入れる。


    これでプロジェクトを開いたときにUnityHubをシ閉じてくれますね。

    では今週もこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】BroadcastMessageって使ってますか?使い方を軽く紹介。複数のオブジェクトの処理を一斉にする場合に使うみたいです。 

    こんにちは。3月ももう終わろうとしています。
    早いですね・・・・つらいっす。坂内っす。

    ポケガ3も少しずつですが形になってきてはいます!


    さて、Unityのお話。

    BroadcastMessageって使ってますか?
    私は使ってません。


    オブジェクトの全子供の特定のメソッドを一斉に実行するといったもの。
    SendMessageのブロードキャスト版ですね。

    SendMessage自体使わないと思うのですが(重い)、そのブロードキャスト版とか、さらに重そうですもんね。

    ただ、使い方の紹介だけしときますね。



    こんな感じでCubeを3個並べました。
    ボタンを押したら動く感じにしようかなと。

    それぞれのCubeには以下のコンポーネントを付けています。

    [Blog0328.cs]

    using UnityEngine;

    public class Box0328 : MonoBehaviour
    {
    Vector3 targetPosition;
    private Vector3 velocity = Vector3.zero;
    public float time = 1F;

    private void Start() {
    targetPosition = transform.position;
    }

    public void MoveY() {
    targetPosition = new Vector3(transform.position.x, 2f, transform.position.z);
    }

    private void Update() {
    transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, time);
    }
    }



    MoveYを呼べば動く感じですね。

    さっそくBroadcastMessage使ってみましょう。

    シーンに空のオブジェクトを作って、以下のコンポーネントを付けます。

    [Blog20220328.cs]

    using UnityEngine;
    using UnityEngine.UI;

    public class Blog20220328 : MonoBehaviour
    {
    [SerializeField] Button btnMove;
    [SerializeField] GameObject rootObj;

    void Start()
    {
    btnMove.onClick.AddListener(MoveCube);
    }

    void MoveCube() {
    rootObj.BroadcastMessage("MoveY");
    }
    }



    ボタンとRootになるオブジェクトをアサインします。



    これで、実行。



    ちゃんと全部のCubeのMoveYを呼んでくれたらしいです。


    ただ、SendMessageと同様BroadcastMessageも以下のような問題があります。

    1.オブジェクトに対象のメソッドがない場合でもコンパイルが通ってしまうため、エラーが追いにくい。
    2.おもい

    ということで、上記処理を行うならば、以下のようにした方がよさそうですね。

    [Blog20220328.cs]

    using UnityEngine;
    using UnityEngine.UI;

    public class Blog20220328 : MonoBehaviour
    {
    [SerializeField] Button btnMove;
    [SerializeField] Box0328[] boxs;

    void Start()
    {
    btnMove.onClick.AddListener(MoveCube);
    }

    void MoveCube() {
    foreach (Box0328 box in boxs) {
    box.MoveY();
    }
    }
    }



    Rootのオブジェクトを使わず、Cubeのクラスの配列等にアサインし、それぞれMoveYを呼ぶ。

    たぶんこれが正解でしょうか。

    ということで、BroadcastMessageはそれはそれで便利ではあるが、問題も多いので使うところを考えて使いましょう。

    どこで使うのがいいとかあれば教えてくださいませ。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】C#のちょっとした話。可変長引数ってのがあるよ。 

    こんにちは。
    大坂です。

    何も思いつかなかったので、可変長引数ってのがあるよっていうお話。

    使い方は、引数にparamsをつけるだけですね。
        void Start() {
    Test("a");
    Test("a", "b");
    Test("a", "b", "c");
    }

    void Test(params string[] strArray) {
    foreach(string str in strArray) {
    Debug.Log(str); ;
    }
    }

    結果


    こんな感じで使えるやつです。
    見た目はスッキリしますが、コストは高いみたいなので、よく呼ばれる処理では使用しないほうがいいっぽいですけどね・・・。

    文字列つなげてログに出す拡張とかにしておくと少し便利かもしれませんね。

    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Hierarchyでオブジェクトを作成した時に名前編集モードにする。 

    こんにちは。
    大坂です。

    Hierarchyでオブジェクトを作成した時にそのままの名前で使うことはほとんどないので、
    作ったときに「F2」などを押さないでも名前編集モードにする方法です。

    「Hierarchy」タブ辺りで右クリックをして「Rename New Objects」をONにするだけ。


    わかりにくいですが作った瞬間に編集出来るようになってます。


    少しだけ便利ですね。
    ではまたノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】Post-processingを利用して、オブジェクトを光らせてみた。 

    こんにちは。坂内っす。

    もうだいぶ春っぽくなりましたね!暖かい日が続いてまいりました!
    花粉も盛り上がってきてるようです!

    Unityでオブジェクトを光らせてみようかということで、試してみたことをメモメモ。
    Post-Processを使ってオブジェクトを光らせてみましょう。

    ①Post-Processingをインストール

    パケージマネージャでインストールします。

    ②Cubeを作ってみる。

    ただCubeをつくるだけ。

    ③カメラにPost-process Layerコンポーネントを付ける


    Post-processLayerのVolume-blendingにあるLayerにポストプロセスの対象とするレイヤーを選択します(?)

    今回は適当に「Object」というレイヤーを作成しました。

    ④ヒエラルキーで空のオブジェクトを作成し、Post-process Volumeコンポーネントをつけます。

    空のオブジェクトの名前を「volume」にしています。

    Volumeをつけたら、Profileを作成します。

    Profileを作成したら、Add effectを選択し、Bloomを追加します。


    ⑤Bloomの設定を行います。


    volumeのオブジェクトのレイヤーを、先ほどPost-processLayerで設定したレイヤーにします。

    Post-process Volumeの is Globalにチェックを入れます。

    BloomのIntensityにチェックを入れ、数値を上げます。

    これで、オブジェクトが光ります。



    ここまではいいのですが、光らせたくないオブジェクトってどうすればいいんですか????

    このシーンにあるモノすべてが光ってしまいます・・・・

    カメラにつけたLayerだけが光ると思っていたが、全部光ってしまいますね。

    Post-processLayerがついていないカメラをもう一つ用意し、そちらで光らせたくないレイヤーを映せばできましたが、Post-processLayerのレイヤーを指定したのって意味あるんだろうか・・・・?





    ということで、Post-processingを利用し、オブジェクトを光らせてみた、でしたー!

    あでゅ~ノシ


    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unityでプロジェクトのタイプ検索と保存 

    こんにちは。
    大坂です。

    Projectウィンドウの虫眼鏡のところに文字を打つとProject内を検索してくれますよね?
    以前のこの記事とか。

    ここって「t:」を先頭に入れるとタイプで検索してくれます。

    試しに「t:scene」と打ってシーンを検索。

    シーンの一覧を出してくれますね。

    ちなみに打つのが面倒な場合は、このボタンを押すと検索できるタイプの一覧で出てきますね。


    あと検索ワードがある状態で、「★」のボタンを押すと、Favoritesに追加してくれます。
    (2021からはなくなってるかも?)


    Projectウィンドウの検索についてでした。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】RectMask2Dを使ってみた。softnessが使い勝手よさげですよね! 

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

    ちょっとポケガ3作ってますが、色々なものが尽きたのでどうしようかというところ。


    さて、いつから追加されていたのかわかりませんが、RectMask2Dというコンポーネントがあります。
    四角でしか使えませんが、Maskの機能になります。

    こんなImageを用意

    Maskというオブジェクトの子に上記のImageを置きます。

    Maskオブジェクトは60x60
    Imageオブジェクトは60x120

    MaskオブジェクトにRectMask2Dコンポーネントを付けます。


    こんな感じでMaskが掛けられます。

    また、RectMask2Dのsoftnessをこんな感じにすると、マスクされたにソフトネスがかかります。



    このRectMask2Dを使うとスクロールビューの端のところに簡単にソフトネスをかけれます。


    こんな感じのスクロールビューがあったとして、この中のViewPortオブジェクトについているMaskコンポーネントを消して、RectMask2Dコンポーネントをつけます。
    softnessのYを20くらいにするとこんな感じになります。



    スクロールビューの上下にソフトネスな感じがでてますよね。

    こんな感じでRectMask2Dでマスクが簡単にできます。


    あんまり使ってなかったですが、使えそうなので使っていこうと思います。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Dropdownのリストの中の文字サイズを大きくする 

    こんにちは。
    大坂です。

    今更ですが、Dropdownのリストの中の文字サイズを大きくする方法です。

    こんな感じで、Dropdownのリストの文字が小さいと選びにくかったりしますね。


    まず、Item Labelの文字サイズを上げてみる。


    他を変えずに実行すると、テキストの高さが足りなくて文字が表示されなくなりますね。


    次にItemの高さを変える。
    ※Item Labelの高さを変えると1個1個の間が詰まってしまう


    これでちゃんと文字サイズが大きくなって表示されます。


    今更ですが、まとめてみました。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0