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

     

    【ハルシオンブログ】 yield return StartCoroutine を StopCorutine するとき 

    こんにちは。
    大坂です。

    今日も宣伝から!
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    さて、yield return StartCoroutine を StopCorutine したい時ってありますよね。
    前から使ってたような気がしますが、なんかパッとやり方を思い出せなかったので…。

    ①Coroutine を使用する方法

    bool isLoop;
    Coroutine testCoroutine;

    IEnumerator Start() {
    btnTest.onClick.AddListener(OnClickStop);
    // Coroutine 変数に StartCoroutine を設定
    testCoroutine = StartCoroutine(TestCorutine());
    // フラグが false になるまで待つ
    yield return new WaitWhile(() => isLoop);
    Debug.Log("Stopしたよ");
    }

    public IEnumerator TestCorutine() {
    isLoop = true;
    while(isLoop) {
    yield return null;
    }
    }

    public void OnClickStop() {
    isLoop = false;
    }


    ②IEnumerator を使用する方法

    bool isLoop;
    IEnumerator testIEnumerator;

    IEnumerator Start() {
    btnTest.onClick.AddListener(OnClickStop);
    testIEnumerator = TestCorutine();
    yield return StartCoroutine(testIEnumerator);
    Debug.Log("Stopしたよ");
    }

    public IEnumerator TestCorutine() {
    isLoop = true;
    while(isLoop) {
    yield return null;
    }
    }

    public void OnClickStop() {
    isLoop = false;
    }


    最近直したときはCoroutineを使用する方法でやりましたが、
    IEnumerator を使用する方が修正少なかったなぁと思い、忘れないようにメモです。

    ではまたノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】UnityでSelectionって機能つかってみた。ヒエラルキーのオブジェクト選択状態をセーブロードできる機能。 

    こんにちは。花粉で目も鼻もやられている月曜日。坂内っす。
    そういえば明日休みなんですね。
    飛び石連休とかって言葉久しぶりに聞きました。

    ええ、ええ

    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    もちろん今日もポケガの宣伝から入りますよ。
    育成シミュレーションゲームになってます。興味を持たれたら遊んでやってください。


    UnityでSelectionって機能使ってますか?
    オブジェクトを選択している状態をセーブロードする感じの機能です。

    例えばCubeとSphereの2つのオブジェクトがある時、Cubeを選択している状態で「Ctrl+Alt+1」を押します。



    次にSpereを選択している状態で「Ctrl+Alt+2」を押します。



    Ctrl+Alt+番号
    でその番号に保存という感じです。

    このあとに「Ctrl+Shift+1」や「Ctrl+Shift+2」を押すと、それぞれ保存した番号の「選択している状態」をロードします。



    こんな感じに、マウスで選択しなくても選択している状態をセーブロードできます。

    機能としては、Edit>Selectionを見ると出てきますが、最大で10個まで保存できるようですね。




    画面がごちゃごちゃしてきて、何回も同じオブジェクトを繰り返し選択するようなことがある場合は、とても便利な気がします。

    ということで、今まで使ったことなかったけど、こんな機能があるんだねっていう紹介でした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unityで複数種別のファイルが混在しているフォルダから特定の種別だけ選択する方法 

    こんにちは。
    大坂です。

    花粉なのか季節の変わり目なのかで体調を崩していますが、皆様大丈夫でしょうか?
    今日もポケットガール~受け継がれし希望~の宣伝から。
    少しでも興味を持ってもらえたらDLしてもらえると助かります!

    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    では、ここからUnityのお話。
    Unityで1個のフォルダの中にTextureやらPrefabやらごちゃごちゃ入っていて、
    その中からTextureだけを選択したい時とかありますかね?
    フォルダ分けとちゃんとしていればそういうことはないと思いますが、僕はこの前ありました…。

    プロジェクトでタイプ検索してTextureだけにできたりもしますが、
    色々Assetとかを入れていると選択したくないものも検索対象になってしまうので、このときは使えませんでした。

    で、別の方法ないかなーとUnity触ってたら、こんな感じでできましたというお話。

    フォルダの中がこんな感じで、フォルダ内のファイルを全部選択したら、InspectorでTextureを選ぶだけ。


    ちゃんとTextureだけが選択されます。


    あんまり複数種別のファイルを混在させることはないと思いますが、
    簡単に特定の種別だけ選択できるので、何かの時にはぜひ使ってみてください。

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

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】Unityでオブジェクトの一覧を作成し、アイテムをタップすると選択中的なオブジェクトを表示する方法 

    少し暖かくなってきました。
    その代わり花粉が暴れてきた今日この頃。
    目がかゆい坂内です。

    ポケットガール好評リリース中。
    是非遊んでやってください。

    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    宣伝から入りました。


    さて、Unityのお話。
    Unityでアイテムのリストを作成し、タップで選択中というオブジェクトをそのリストアイテムに出す。

    こんな感じのことをしたい時。




    こんな感じで作ってますよという紹介です。
    (もっと簡単な方法あると思います)

    アイテムを並べるためのスクロールビューを作成。
    スクロールの必要もないんだけど、いっぱい並べた時用にスクロールにしてみた。



    そしてCanvasに以下コードをくっつける。
    [Blog0313.cs]

    using System.Collections.Generic;
    using UnityEngine;

    public class Blog0313 : MonoBehaviour
    {
    [SerializeField] ListItem listItemPref;

    [System.Serializable]
    public class Item {
    public int itemCd;
    public string itemName;
    }
    List<Item> items = new List<Item>();
    List<ListItem> listItems = new List<ListItem>();

    [SerializeField] Transform trnItemPlace;

    int currentItemIndex;

    private void Start() {
    // アイテムのデータを10個生成
    for (int i = 0; i < 10; i++) {
    Item item = new Item();
    item.itemCd = i;
    item.itemName = "Item" + i;
    items.Add(item);
    }

    // アイテムを生成
    foreach (Item item in items) {
    ListItem listItem = Instantiate(listItemPref, trnItemPlace, false);
    listItem.Setup(item, SelectItem);
    listItems.Add(listItem);
    }
    }

    ///

    /// アイテムを選択する処理
    /// </summary>
    /// <param name="i"></param>
    void SelectItem(int i) {
    currentItemIndex = i;
    // リスト更新
    foreach (ListItem listItem in listItems) {
    listItem.CheckSelect(currentItemIndex);
    }
    }
    }




    次に、リストのアイテムPrefabを作成。



    このItemには以下のコードを張り付けます。

    [ListItem.cs]

    using UnityEngine;
    using UnityEngine.UI;
    using TMPro;
    using System;

    public class ListItem : MonoBehaviour
    {
    [SerializeField] TextMeshProUGUI lblItemName;
    [SerializeField] Button btnSelect;
    [SerializeField] GameObject objSelector;

    int itemCd;

    public void Setup(Blog0313.Item itemData, Action<int> SelectItem) {
    objSelector.SetActive(false);

    lblItemName.text = itemData.itemName;
    this.itemCd = itemData.itemCd;

    btnSelect.onClick.AddListener(() => SelectItem(itemData.itemCd));
    }

    ///

    /// 選択中マーク更新処理
    /// </summary>
    /// <param name="index"></param>
    public void CheckSelect(int index) {
    if (itemCd == index) {
    objSelector.SetActive(true);
    } else {
    objSelector.SetActive(false);
    }
    }
    }



    こんな感じの処理をしてみる。

    実行するとこんな感じ。



    選択した際に、選択されてるindexを各リストのオブジェクトに渡して、自分のindexと同じやつだけ選択中のオブジェクトを表示、違う場合は選択中のオブジェクトを非表示しているだけ。
    特に何も考えないで作るとこんな感じでできます。

    ということで、メモ的な感じでした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】マルチタッチの禁止【ポケガ3よろしくね】 

    こんにちは。
    大坂です。

    花粉が飛びまくってますが、皆様大丈夫でしょうか?
    自分はダメそうですorz

    さて、Unity全体でマルチタップを禁止したいときのお話。
    1行で終わる話なのですが…。

    これを書くだけです。

    Input.multiTouchEnabled = false;


    https://docs.unity3d.com/ja/current/ScriptReference/Input-multiTouchEnabled.html

    デフォルトでは有効になっているので、無効にしたい場合はこれを書いてあげる必要があります。
    マルチタッチの必要がないアプリはこれをやっておけば大丈夫そうです。

    ポケットガール~受け継がれし希望~ リリース中です!
    よろしくお願いします!!

    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0