以下の内容はhttps://www.hanachiru-blog.com/entry/2019/03/30/221818より取得しました。


【Unity】LINQと匿名クラスを組み合わせて使う

はじめに

今回は匿名クラスとLINQを組み合わせて使うことについての記事になります!

匿名クラス

using UnityEngine;

public class Hoge : MonoBehaviour
{
    private void Start()
    {
        var enemy = new { Name = "Slime", Exp = 10 };
        Debug.Log(enemy.Name);
    }
}

このように匿名型のクラスを作ることができます。

実際の例

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

public class Hoge : MonoBehaviour
{
    private void Start()
    {
        var gameObjects = GameObject.FindGameObjectsWithTag("Enemy")
            .Select(t => new { Name = t.name, Distance = (t.transform.position - transform.position).magnitude })
            .OrderBy(t => t.Distance);

        foreach (var item in gameObjects)
        {
            if (item != null) Debug.Log(item.Name);
        }

    }
}

このコードはHogeコンポーネントを持つゲームオブジェクトから近い順に”Enemy”タグを持つゲームオブジェクトの名前を表示しています

どんな処理をしているかざっくりと書くと、
・”Enemy”タグも持つGameObject[]を取得
・ゲームオブジェクトの名前・距離をフィールドとする匿名クラスのコレクションに変換
・距離によってソート
といった流れになっています。

さいごに

LINQと匿名クラスを併用することで幅がぐんと上がると思います。
是非うまく使っていきましょう!




以上の内容はhttps://www.hanachiru-blog.com/entry/2019/03/30/221818より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14