본문 바로가기
개발/Unity

Unity) MonoBehaviour Base (자주사용하는 Component Cache)

by 테샤르 2024. 7. 27.

MonoBehaviour Base (자주사용하는 Component Cache)

 

 

using UnityEngine;
using System.Collections.Generic;

public class BaseMonoBehaviour : MonoBehaviour
{
    // 컴포넌트를 캐싱할 딕셔너리
    private Dictionary<System.Type, Component> _componentCache = new Dictionary<System.Type, Component>();

    // 제네릭 메서드를 통해 컴포넌트 캐싱 및 반환
    protected T GetCachedComponent<T>() where T : Component
    {
        System.Type type = typeof(T);

        if (_componentCache.ContainsKey(type))
        {
            return (T)_componentCache[type];
        }

        T component = GetComponent<T>();
        if (component != null)
        {
            _componentCache[type] = component;
        }
        return component;
    }

    // Transform 캐시 전용 속성
    private Transform _cachedTransform;
    public new Transform transform
    {
        get
        {
            if (_cachedTransform == null)
            {
                _cachedTransform = base.transform;
            }
            return _cachedTransform;
        }
    }
}

 

반응형
  • BaseMonoBehaviour: 컴포넌트를 캐싱하는 메커니즘을 내부적으로 처리하여 코드 중복을 줄이고 성능을 최적화합니다.
  • GetCachedComponent<T>(): 컴포넌트를 캐싱하고 반환하는 제네릭 메서드.
  • Transform 캐싱: Transform 컴포넌트를 캐싱하여 자주 사용되는 경우 성능을 향상시킵니다.

이러한 접근 방식을 통해, MonoBehaviour를 상속받는 클래스에서 자주 사용되는 컴포넌트를 쉽게 캐싱하고 사용할 수 있습니다. 이는 코드의 가독성과 유지 보수성을 높이고, 성능을 최적화하는 데 도움을 줍니다.

 

 

사진

 

★☆

 

반응형

댓글