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를 상속받는 클래스에서 자주 사용되는 컴포넌트를 쉽게 캐싱하고 사용할 수 있습니다. 이는 코드의 가독성과 유지 보수성을 높이고, 성능을 최적화하는 데 도움을 줍니다.
사진
★☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
Unity)Monitor Attribute (0) | 2024.08.06 |
---|---|
문제해결)Unity) SpriteAtlas Menu가 없는 경우 (0) | 2024.08.01 |
Unity) Search Extension (검색 기능 확장하기) (0) | 2024.07.16 |
Unity) 컴파일러 타임 라인 (Compilation Timeline) (0) | 2024.07.15 |
Unity) TextMeshPro 수평 그라디언트 적용하기(Horizontal Total Color Gradient) (0) | 2024.07.12 |
댓글