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

     

    【ハルシオンブログ】特定範囲のデータがほしいとき 

    こんにちは。
    大坂です。

    Linqで特定範囲のデータがほしいときに使えるやつの紹介。
    使うのはSkipとTake。
    コードはこんな感じ。


    List<int> test = new List<int>{1,2,3,4,5,6,7,8,9,10};
    // データを5個とばして(6個目から)から3個データを取得
    var skipList = test.Skip(5).Take(3);
    Debug.Log(string.Join(",", skipList));


    一応結果。


    何が便利かってページングやるときとかに使いやすいですよねって話です。

    readonly int pageSize = 3;
    public void paging(int pageNum) {
    List<int> test = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    var page = test.Skip(pageSize * pageNum).Take(pageSize);
    }

    とかってやるとページング処理が楽にできるかもしれませんね!

    ということで今週もこれくらいでノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】DoTweenのSequenceでのPlayメソッドがいまいち謎だったのが解けた件 

    こんにちは!いきなり暑くなりましたね!坂内っす!

    Unity+DoTweenのネタ。

    SequenceのPlayメソッドってどこで使うんですか?
    よくわからないんですよね・・・・よく見るコードとしてはこういうのがあります。


    Sequence seq = DOTween.Sequence();
    seq.Append(imgAAA.transform.DOLocalMove(Vector3.one, 1.0f));
    seq.Join(imgAAA.transform.DOScale(Vector3.zero, 1.0f));
    seq.Play();



    これってPlayなくても動くんですよね。
    なんでPlayってあるんだろう?

    実はPlayって「途中で止めた時に、その続きを再生する」用なんじゃないかな。

    こんな感じで使えますね。


    using UnityEngine;
    using UnityEngine.UI;
    using DG.Tweening;

    public class Blog0525 : MonoBehaviour
    {
    public Button btnButton;
    public Image imgObj;

    Sequence seq = null;

    bool isMove;

    void Start()
    {
    btnButton.onClick.AddListener(OnClickButton);
    // イラストを動かす
    isMove = true;
    seq = DOTween.Sequence();
    seq.Append(imgObj.transform.DOLocalMoveX(350, 3.0f));
    seq.Join(imgObj.transform.DOScale(new Vector3(2, 2, 2), 3.0f));
    seq.SetLoops(-1, LoopType.Yoyo);
    }

    void OnClickButton() {
    if (isMove) {
    isMove = false;
    seq.Pause();
    } else {
    isMove = true;
    seq.Play();
    }
    }
    }



    こんな感じに動きます。



    初めは動いていて、ボタンを押すと止まり、もう一度押すと続きから動き出す。

    ちょっとPlayの使い方がいまいちわからなくてもやもやしていたのが解決してすっきりしました!

    ってことで、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unity2019.2でTryGetComponentなるものが追加されたんですね。 

    こんにちは。
    大坂です。

    暑かったり寒かったりと体調を崩しそうですが、今週もブログを書いていきます。

    Unity2019.2でTryGetComponentなるものが追加されていました。
    今までコンポーネントがついていないかどうかを確認するにはこんな感じで書いてました。


    Image test = GetComponent<Image>();
    if (test != null) {
    test.sprite = spr;
    }

    それがこんな感じでかけるようになりますね~。

    if(TryGetComponent(out Image test)) {
    test.sprite = spr;
    }


    ということで、地味な機能の紹介です。
    では今週もこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unityとは関係ないんだけど、PGやってた昔からよく使っている開発に役に立つツール紹介! 

    こんにちは!坂内です。

    今日は天気が悪く、一日中雨ぽいですね・・・・
    歯医者だというのになぁ・・・・・

    本日はUnityとは違うんですが、よく使っている素敵ツールの紹介。

    ファイルの比較ツールとか皆さん使っていたりします?

    今回紹介するツールはこちら。

    【WinMerge】
    https://winmerge.org/?lang=ja

    使いやすいファイル比較ツールです。

    プログラム変えたんだけど、どこが変わってたっけー?(ある?
    この設定ファイル(jsonとか)って前と何が変わってたっけ?
    等々の時に使えますよ!

    もちろんテキストにしなくても、ファイルでの比較、フォルダでの比較などもできます。

    昔のSEPG時代から使っています。




    【FastStone Capture】
    https://www.faststone.org/download.htm

    スクショツール。

    すごい使いやすいツールです。
    画面のここをキャプチャしたい、やフレーム毎でのキャプチャも簡単です。

    こいつもSEPG時代からお世話になっています。
    テストでのエビデンスって実際にどうなっているのか画面をキャプチャしまくったりするんですよね。
    かなりの画面をこいつでキャプチャしてきました。

    ということで、本日はよく使っているツールの紹介でした。

    では、あでゅ~ノシ

    Category: その他日記

    tb 0 : cm 0   

    【ハルシオンブログ】親オブジェクトからすべての子オブジェクトを切り離したいとき。 

    こんにちは。
    大坂です。

    親オブジェクトからすべての子オブジェクトを切り離したいとき。・・・がありますかね?
    簡単にできる方法があるのでご紹介。

    コードとしてはこれだけです。

    public Transform perent;

    void Start()
    {
    perent.transform.DetachChildren();
    }


    実行前


    実行後


    すべての子オブジェクトが親オブジェクトから切り離されて、一番上の階層に行きましたね。
    孫はそのままのです。

    何かに使うことがあるかもしれませんね・・・?
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unityでもちゃんと定数使ってますか? 

    いっきに暑くなってまいりました。
    ご機嫌麗しゅう?
    坂内です。

    初心に帰って簡単な話ですが、大切な話。

    定数って皆さん使っていますか?

    const とかってやつです。


    定数を使うところってどんなところでしょうか?
    例えば2Dキャラを移動するにあたり、X座標が-100、+100を超えないようにしたい場合、こんな感じで書いたりしますよね。


    chara2D.transform.position += new Vector2(runspeed * Time.deltaTime * direction);
    if(chara2D.transform.position.x < -100){
    chara2D.transform.position = new Vector2(-100, chara2D.transform.position.y);
    }else if(chara2D.transform.position.x > 100){
    chara2D.transform.position = new Vector2(100, chara2D.transform.position.y);
    }



    範囲が‐100~100から-50~50に変更された場合には4か所修正をしなくてはいけません。
    また、この‐100や100という数値を使った場所がここ以上に存在する場合、その部分も変えないといけなくなります。
    いちいち検索してやるのも大変ですよね・・・・ってことで

    こういう時に定数を使いましょう


    const float MOVE_CHARA_X_MIN = -100;
    const float MOVE_CHARA_X_MAX = 100;

    ~~~

    chara2D.transform.position += new Vector2(runspeed * Time.deltaTime * direction);
    if(chara2D.transform.position.x < MOVE_CHARA_X_MIN){
    chara2D.transform.position = new Vector2(MOVE_CHARA_X_MIN, chara2D.transform.position.y);
    }else if(chara2D.transform.position.x > MOVE_CHARA_X_MAX){
    chara2D.transform.position = new Vector2(MOVE_CHARA_X_MAX, chara2D.transform.position.y);
    }



    こんな感じでキャラのX移動のMINとMAXを定数にしておけば、constの場所だけ変更すれば他を触らなくて済みます。

    という感じで、定数を使っていきましょう!

    ほんと初心な話でした。では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unity 2019.3でPlayボタン押したときにメソッドを実行したいときの新機能 

    こんにちは。
    大坂です。

    連休が明けて、今日からブログの更新も再開です。
    と入ってもネタはないのでいつも通りの小ネタです。

    Unity 2019.3でPlayボタン押したときにメソッドを実行したいときはこうすれば簡単だよって話。

    using UnityEngine;
    using UnityEditor;

    public class Test
    {
    [InitializeOnEnterPlayMode]
    private static void TestMethod()
    {
    Debug.Log("Play押したら実行されるよ");
    }
    }

    これを使ったら起動時に何かをしたいときは楽にできますね。
    ということで今週もこれくらいでノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0