FC2ブログ
    03 «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.» 05

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

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

     

    【ハルシオンブログ】Unityの開発でOfTypeって使ってますか?リストから型指定で取り出すのに便利ですね! 

    こんにちは。坂内っす。
    あと1週間で3月も終わってしまいますね!
    日が経つのが早いです!

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    Unityで開発していて、OfTypeって使ってますか?

    配列(List).OfType<型> って感じで使います。
    配列の中から指定した型を取り出すことができます。


    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using UnityEngine;

    public class Blog20240325 : MonoBehaviour
    {
    void Start()
    {
    ArrayList list = new ArrayList();
    list.Add(1000);
    list.Add("AAAA");
    list.Add("BBBB");
    list.Add(new GameObject());
    list.Add(2000);

    IEnumerable<int> intAry = list.OfType<int>();

    foreach (var item in intAry)
    {
    Debug.Log(item);
    }
    }
    }



    こんな感じのコードを書くと、listからintだけを取り出すことができます。

    1000
    UnityEngine.Debug:Log (object)
    Blog20240325:Start () (at Assets/Scripts/Blog20240325.cs:21)

    2000
    UnityEngine.Debug:Log (object)
    Blog20240325:Start () (at Assets/Scripts/Blog20240325.cs:21)

    また、こんな感じで親クラスのリストから指定したクラスのみを持ってくることもできます。


    using System.Collections.Generic;
    using System.Linq;
    using UnityEngine;

    public class Blog20240325 : MonoBehaviour
    {
    public class BaseClass {
    public int no;
    public string className;
    }

    public class ClassA : BaseClass
    {
    public ClassA() {
    no = 1;
    className = "ClassA";
    }
    }
    public class ClassB : BaseClass
    {
    public ClassB() {
    no = 2;
    className = "ClassB";
    }
    }
    public class ClassC : BaseClass
    {
    public ClassC() {
    no = 3;
    className = "ClassC";
    }
    }

    void Start()
    {
    List<BaseClass> list = new List<BaseClass>();
    ClassA classA = new ClassA();
    list.Add(classA);
    ClassB classB = new ClassB();
    list.Add(classB);
    ClassC classC = new ClassC();
    list.Add(classC);

    ClassB listupClass = list.OfType<ClassB>().FirstOrDefault();

    Debug.Log(listupClass.className);
    }
    }



    ClassB
    UnityEngine.Debug:Log (object)
    Blog20240325:Start () (at Assets/Scripts/Blog20240325.cs:46)

    OfType結構便利ですよね。

    OfTypeの簡単な紹介でした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/1055-1567ce53
    この記事にトラックバックする(FC2ブログユーザー)