コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】属性を適用すると自動で GetComponent できる「Unity GetComponent Auto Injector」紹介

はじめに

https://github.com/jinnin0105/UnityGetComponentAutoInjector

「Unity GetComponent Auto Injector」を Unity プロジェクトに導入することで
属性を適用すると自動で GetComponent できるようになります

使い方

using System.Collections.Generic;
using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField, GetComponent]
    private Transform m_transform1;

    [SerializeField, GetComponentInChildren]
    private Transform m_transform2;

    [SerializeField, GetComponentInChildren( true )]
    private Transform m_transform3;

    [SerializeField, GetComponentInChildren]
    private List<Transform> m_transform4;

    [SerializeField, GetComponentInParent]
    private Transform m_transform5;

    [SerializeField, GetComponentInParent( true )]
    private List<Transform> m_transform6;

    [SerializeField, GetComponentInParent]
    private List<Transform> m_transform7;

    [SerializeField, GetComponentInChildrenOnly]
    private Transform m_transform8;

    [SerializeField, GetComponentInChildrenOnly( false )]
    private List<Transform> m_transform9;

    [SerializeField, GetComponentInChildrenName( "GameObject (1)" )]
    private Transform m_transform10;

    [SerializeField, FindGameObject( "GameObject (1)" )]
    private GameObject m_transform11;

    [SerializeField, FindGameObjectWithTag( "Player" )]
    private GameObject m_transform12;

    [SerializeField, FindObjectOfType]
    private Transform m_transform13;
}

上記のようなコードを記述すると、Unity エディタの再生状態が変化した時に
属性が適用された変数に自動でコンポーネントが設定されます

f:id:baba_s:20190102162615p:plain

コンポーネントの歯車アイコンを選択して「Force auto inject this」を押すことでも
属性が適用された変数にコンポーネントを設定できます