inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

UI 자동화 #4

Extension 에서 구현한 함수의 이름이 해당 클래스에 이미 구현된 함수와 이름이 겹치는 경우

128

K SUN

작성한 질문수 3

0

안녕하세요, Extension 관련 구현에 대해 연습해보다가 궁금증이 생겨 질문드립니다.

 

예를들어 우리가 구현한 Extension 클래스 안에 AddUIEvent 와 같은 메소드를 추가해주면서 this GameObject go 라는 문법을 써줌으로서, 마치 GameObject 의 함수인 것처럼 쓸수 있게되었는데요,

만약 Extension 클래스안에 ToString 이라는 함수를 만들어주면, 실제로는 최상위 클래스인 Object 클래스 내에 구현된 ToString 이 호출되는 것을 확인했습니다.

 

이럴 경우, 이름을 적절히 잘 회피해서 쓰는 방법 이외에 내가 구현한 함수를 쓰도록 하는 다른 방법이 있을까요?

image.pngimage.png


C# unity

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. K SUN님께서 질문하신 내용이 확장 메서드와 기존 메서드 간의 충돌에 관한 것이군요. 확장 메서드를 사용할 때, 이미 존재하는 메서드 이름과 겹치는 경우가 있을 수 있습니다. 이 상황에서 중요한 점은 C#의 메서드 호출 우선순위입니다.

기본적으로 C#은 클래스 내에 정의된 메서드를 우선적으로 호출합니다. 따라서 ToString처럼 이미 Object 클래스에 정의된 메서드를 확장 메서드로 덮어 쓰려 해도, 기존의 ToString 메서드가 호출됩니다. 이럴 때는 이름 충돌을 피하는 것이 가장 좋은 방법입니다.

확장 메서드를 통해 내가 구현한 것을 우선 호출하고 싶다면 아래의 URL을 통해 다양한 방법을 고려해보실 수 있습니다:

  1. Extension 클래스가 어떤방식으로 적용되는건지 헷갈립니다. - Inflearn
  2. Extension 문법 - Inflearn

위의 답변 링크들은 비슷한 확장 메서드의 사용에 대한 개념과 문제 해결 방법을 다루고 있습니다. 확장 메서드는 C#에서 편리한 기능이지만, 함수 이름이 충돌하는 경우 기존의 클래스를 확장하기 보다는 단순히 클래스 내에서 다른 이름을 부여하는 것이 일반적입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

UI 기능 관련 질문이 있습니다!

0

37

2

픽셀 좌표 스크린 좌표

0

33

0

전체적으로 코드 읽는게 굉장히 오래 걸리네요...

0

75

2

카메라 #2 수업 캐릭터 쓰러짐 해결

0

84

1

플레이어 움직임이 끝날때, 기울어짐 현상

0

84

1

Input 적용과 관련하여 질문 있습니다.

0

75

1

디버그 불가.. Unity에 연결 불가

0

83

1

달리기 애니메이션 에러

0

89

2

오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다

0

66

1

GetKey 오류

0

110

2

에셋을 어디에 올려두신지 알 수 있나요?

0

107

1

재귀호출? 오류나는데 왜 이래요 ?

0

169

6

Animation blending 파라미터 계산

0

69

1

newPos와 to지점이 겹쳐져야 하는거 아닌가요?

0

97

3

오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다

0

88

2

질문있습니다

0

143

2

아 이거 소스코드 같은거 없나요?

0

142

3

질문 드립니다. string.IsNullOrEmpty(name)

0

87

2

@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?

0

136

2

유니티6 NavMesh 안되는분들

1

176

1

Unity6 Unity-Chan Material 마젠타 문제 해결법

7

529

1

GetComponent<Poolable> 질문드립니다.

0

102

2

UI 불러오지 못함

0

119

2

UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.

0

155

2