에게 내가 유니티의 새로운 스크립트를 만들 때마다 추가, 난 항상 내 스크립트처럼에 따라 구성 요소를 검사 한 무리의 일을 끝낼 수 있습니다 : 그래서유니티 : 일반적인 방법 가져 오거나 구성 요소
SpriteRenderer sr = gameObject.GetComponent<SpriteRenderer>();
if(sr == null)
sr = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer;
을 모든 Component에서이 작업을 수행하기 위해 일반적인 방법을 사용하기로 결정하고 다음 코드를 작성했습니다.이 코드는 제 자신의 새 스크립트에 간단하게 추가했습니다. 이이 방법의 주요 단점은, 또는 같은 작업을 완료하는 데 다른 더 좋은 방법이 있다면, 아마도를 사용하는 경우
T GetOrAddComponent<T>() where T : Component
{
T component = gameObject.GetComponent<T>();
if (component == null)
component = gameObject.AddComponent<T>() as T;
return component;
}
나는 그것을 시도하고 기능이 잘 작동하지만 궁금하네요 기존 방법 나는 다른 방법으로 메서드를 만들거나 알지 못합니다. 당신은 잠재적으로 두 번 GetComponent
전화를 만드는 것입니다
SpriteRenderer sr;
if(gameObject.GetComponent<SpriteRenderer>())
sr = gameObject.GetComponent<SpriteRenderer>();
else
sr = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer;
,하지만 당신은 코드 구조를 좋아하는 경우에 더 그렇게 될 :
가 시작/깨어에서 작업을 수행하고 염려 할 필요가 없습니다. – Everts
'return o.Get() ?? o.Add ()'(꽤'T'는 중복 됨) –
SimpleVar
이것은 모두 ECS 게임 엔진에 대해 매우 반 패턴입니다. – Fattie