inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)

UI

UI 자동화 관련 문의입니다.

해결된 질문

107

Razer

작성한 질문수 6

0

UI_TitleScene.cs

StartImage 에 클릭 기능 추가에 관한 문의입니다.

 

GetObject((int)GameObjects.StartImage).BindEvent((evt) =>{ Debug.Log("ChageScene"); Managers.Scene.LoadScene(EScene.GameScene);}

,Define.EUIEvent.Click); 에서

StartImage 의 경우 enum GameObjects 소속에 타입도 GameObject 라서 Extension에 의해서 BindEvent를 바로 사용할 수 있는 것으로 보이는데,

만약 Image라 하더라도 Click등의 액션을 이용하려면 무조건 GameObject로 설정해야 하는 것인가요? 아님 extension에서 뭔가를 설정하면 Image(Object)도 GameObject 같이 사용가능한가요? 이것 저것 해봐도 붉은색 투성이라 문의 드립니다.

C# unity MMORPG

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. Razer님.

UI 자동화에서 GameObject를 사용하여 버튼이나 이미지에 이벤트를 바인드할 때, GameObject 타입으로 설정하는 이유는 이벤트 핸들러가 주로 GameObject 컴포넌트에 추가되기 때문입니다. GameObject는 Unity에서 모든 게임 오브젝트의 기본 클래스이기 때문에, BindEvent와 같은 확장 메서드는 일반적으로 GameObject 타입에서 작동하도록 설계되어 있습니다.

하지만 ‘Image’ 같은 다른 Unity 컴포넌트도 이벤트를 처리할 수 있도록 설정하려면, 이 컴포넌트를 포함하는 GameObject의 형태로 이벤트를 바인딩해야 합니다. 이를 통해 이벤트 핸들러가 그 GameObject에 부착되도록 하는 것입니다.

자세한 설명

  1. GameObject를 사용하는 이유: GameObject는 모든 Unity 오브젝트의 기본 단위로, 컴포넌트(Components)를 컨테이너하는 구조입니다. 따라서 이벤트와 같은 상호작용을 관리하기에 적합합니다.

  2. Image 같은 컴포넌트에 이벤트 바인딩: Image 컴포넌트 자체로는 직접 이벤트를 바인딩하기 어렵습니다. 대신, 해당 Image를 포함하는 GameObject를 대상으로 이벤트를 바인딩해야 합니다. 이렇게 하면, Image와 관련된 이벤트가 발생해도 이를 감지할 수 있습니다.

  3. 확장 메서드 구성: 원하는 컴포넌트를 직접 바인딩하고 싶다면, 확장 메서드를 작성하여 특정 컴포넌트를 직접 핸들링할 수 있도록 할 수 있습니다. 그러나 이는 일반적으로 권장되지는 않습니다. 대부분의 경우, GameObject를 사용하여 이벤트를 바인딩하는 것이 좋습니다.

관련된 내용을 더 자세히 알아보고 싶으시다면, 유사한 질문과 답변 링크를 참고해 보시기 바랍니다:
- UI_TitleScene에서 bindevent
- 인벤토리 실습 #2 질문 AddUIEvent활용

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

수업질문은 아닌데요^^

0

59

1

9주차 npc 생성 안되는 이슈. Custom Tile 깨짐

0

107

1

44강 Stage 분할 Cannot Find 에러 관련

0

80

1

8주차 ExtralCell 추가됐을 때 서로 공격 못하는 상황 공유드립니다.

0

119

1

rider에서 new editor config 설정

0

172

1

Reward csv 파일이 없고 EquipmentChart는 열이름 문제로 업로드가 안됩니다.

1

154

2

강의 영상코드랑 강의 자료 코드가 다릅니다.

0

159

2

M1의 어드레서블 리소스 관리 방식에 대하여 질문있습니다.

0

134

1

M1의 리소스매니져 클리어 타이밍에 대해 여쭤보고싶습니다.

0

94

1

C1 일정은 어떻게 되는건가요?

0

218

3

게임 클라이언트 개발에서 테스트 코드 작성이 도움이 될까요?

0

185

1

Stateless서버에서의 유저인스턴스

0

176

2

섹션 4(SaveData, HeroList, ItemData, ItemHolder)에 일부 항목들에 대한 재생오류 해결 부탁드립니다.

0

166

1

첫 강의 manager 가 재생이 안됩니다.

0

300

5

T2는 어떻게된걸까요?

0

434

1

9주차 강의 'Stage 분할' 이 로딩만 뜨고 재생되지 않습니다

0

149

1

강의 완료 시기

0

304

1

다운 받은 맵 프리팹을 오픈해보니 핑크색으로 보이네요

0

566

3

typeof 와 GetType

0

227

1

섹션2 - Tilemap 강의에서 BaseMap 프리팹에 Front_01 용도가 궁금합니다.

0

152

1

패킷 형식 질문입니다.

0

148

1

어드레서블 Sprite 관련해서 질문이있습니다.

0

596

1

Data #2 까지 들었는데 빌드를 해보고싶은데, 어느 강의에서 확인할 수 있나요?

0

300

2

에러해결방벙을 찾고싶어요

0

636

2