本日は Unity の小ネタ枠です。
Unity の TryGetComponent で変数から型を推定してコンポーネントを取得する方法について記事にします。
TryGetComponent
TryGetComponent は指定の型のコンポーネントを1つ取得します。
メソッドは指定の型のコンポーネントを取得できた場合は true を返し、できなかった場合は false を返します。
docs.unity3d.com
本メソッドは Unity 2019.2 以降で利用可能です。
変数から型を推定してコンポーネントを取得する
GetComponent と TryGetComponent では以下のように取得したいコンポーネントの型を明示して実行することで、対象のコンポーネントを検索して取得できます。
// 型を明示してGetComponentを実行するパターン var component = this.gameObject.GetComponent<Transform>(); // 型を明示してTryGetComponentを実行するパターン this.gameObject.TryGetComponent<Transform>(out var component);
TryGetComponent では更に out 変数から型を推定してコンポーネントを取得する書き方もできます。
// 使用する型からも推論できるのでTryGetComponentの行で型を明示しなくてもよい Transform targetTransform; this.gameObject.TryGetComponent(out targetTransform);
これを利用することで、以下のようにプロパティで型を明示している変数などに対して TryGetComponet を用いると取得する箇所で型を明示しない書き方ができます。
・TryGetComponentTest02.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TryGetComponentTest02 : MonoBehaviour { [SerializeField] private Transform targetTransform; void Start() { // 使用する型から推論できるのでここで型を明示しなくてもよい this.gameObject.TryGetComponent(out targetTransform); } }