(GetComponentの場合)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TryGet : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.isKinematic = true;
}
}
(コード上で要求されているコンポーネントを追加し忘れた場合のエラー文)
- MissingComponentException: There is no ‘Rigidbody’ attached to the “Cube” game object, but a script is trying to access it.
(TryGetComponentの場合)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TryGet : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
TryGetComponent(out rb);
rb.isKinematic = true;
}
}
(コード上で要求されているコンポーネントを追加し忘れた場合のエラー文)
- NullReferenceException: Object reference not set to an instance of an object
(TryGetComponentの活用事例)
- nullを返すいうことは「true」「false」の判定が可能
- 「条件文を作ることができる」ので、falseなら必要なコンポーネントを追加するコードを記述できる。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TryGet : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
if(!TryGetComponent(out rb))
{
rb = this.gameObject.AddComponent<Rigidbody>();
}
rb.isKinematic = true;
}
}