![]() |
GetComponent系で都合のいいのだけ取得したい
だったら、都合のいいGameObjectにコンポーネントを追加してしまいましょう。ついでに、メモを残せるようにしておきましょう。
コードは単純に、下みたいので十分です。
public class Marking : MonoBehaviourこれをGetComponent<Marking>系で取得すればいいだけです。
{
[Tooltip("任意のメッセージを記述します")]
public string Message = "";
}
あとは、Messageで取捨選択しても良いでしょう。
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEngine; | |
namespace Chigusa | |
{ | |
/// <summary> | |
/// マーキング用の MonoBehaviour | |
/// </summary> | |
public class Marking : MonoBehaviour | |
{ | |
[Tooltip("任意のメッセージを記述します")] | |
public string Message = ""; | |
#region Static Functions | |
/// <summary> | |
/// 指定の対象から対象のメッセージがあるマーキングを取得します | |
/// </summary> | |
/// <param name="target">指定の対象</param> | |
/// <param name="searchMessage">検索するメッセージ</param> | |
/// <returns>結果</returns> | |
static Marking Get(GameObject target, string searchMessage) | |
{ | |
var tempList = target.GetComponentsInChildren<Marking>(true); | |
foreach (var tempMarking in tempList) | |
{ | |
if (tempMarking.Message == searchMessage) | |
return tempMarking; | |
} | |
return null; | |
} | |
/// <summary> | |
/// 指定の対象からマーキングが含まれるリストを取得します | |
/// </summary> | |
/// <param name="target">指定の対象</param> | |
/// <returns>結果</returns> | |
static Marking[] GetList(GameObject target) | |
{ | |
return target.GetComponentsInChildren<Marking>(true); | |
} | |
/// <summary> | |
/// 指定の対象から対象のメッセージがあるマーキングのリストを取得します | |
/// </summary> | |
/// <param name="target">指定の対象</param> | |
/// <param name="searchMessage">検索するメッセージ</param> | |
/// <returns>結果</returns> | |
static Marking[] GetList(GameObject target, string searchMessage) | |
{ | |
var resultList = new List<Marking>(); | |
var tempList = target.GetComponentsInChildren<Marking>(true); | |
foreach (var tempMarking in tempList) | |
{ | |
if (tempMarking.Message == searchMessage) | |
resultList.Add(tempMarking); | |
} | |
return resultList.ToArray(); | |
} | |
#endregion | |
} | |
} |
0 件のコメント :
コメントを投稿