WinAPI 47 UI (1)

CJB_ny·2022년 9월 24일
0

WinAPI

목록 보기
48/79
post-thumbnail

오늘 배운거 👍👍👍

  • UI 팝업창 이름 변경하는 방법

  • UI클래스는 객체를 생성하지 않기 위한 추상 클래스

    이유는 생각해봐라 (공부한 부분이다)

  • UI Object, None UI Object


예외처리

이렇게 했을 때 문제가 뭐냐하면은

이런식으로 카메라 이동후 클릭하면은 변경된다.

ToolScene에서

계산을 UINt에서 int로 변경했는데 정수의 나눗셈 72~73 번째 줄.

마이너스 정수 값 나누기 정수 일 경우 => + col을 정수로 받아서 col이 현재 0이 된다.

x좌표가 음수일 경우.

그래서 영상처럼 음수 좌표값을 누르더라도 타일이 변경되는 것이다.

이렇게 변경하도록 하자.

팝업 창 이름 변경

이부분 변경하면 팝업창 이름 변경

ㅇㅋ.

UI설계

이때까지는 윈도우 에서 제공하는 Dialog를 사용해서 했는데

인게임에서 UI를 제공하여 타일을 선택할 수 있게 구현을 하도록 하자.

UI렌더링 하는 부분 실제좌표를 가지고 렌더링 하는 중이기 때문에

카메라 이동의 영향을 안 받는다.

모든 UI는 아니다.

UI 클래스 추상 클래스 ❗❗❗

이런 저런 UI있기 때문에.. 이거 UI클래스 '추상 클래스'로 만들어서

'객체화' 할 수 없게 만들 것이다.

UI 계층구조

이런 계층 구조로 만들것이다.

계층구조의 장점 : 자식 Ui는 부모 ui가 반드시 먼저 update되어야 그 데이터를 가져다가 본인의 상태를 결정할 수 있음.

렌더링또한 부모가 먼저 되어야함.

자식들 렌더링 업데이트 작업을 해주도록 하자.

그리고 UI는 finalUpdate가 필요한데 지금 Object에서 final로 막아 놓은 상태이다.

근데 이거하기 전에 Animator

지금 밑줄 부분 finalUpdate에서 update하는게 맞기 때문에 (컴포넌트니까)

옮겨주도록 하자.

Object에서

이렇게 finalUpdate를 호출 하도록 하자.

클래스 구조 변경

UI Object, None UI Object 클래스를 만들어서 UI가 아닌 오브젝트 클래스에서 finalUpdate부분을 final로 막으면된다.

그래서 일단 final키워드 없애주도록 하자.

그리고 UI의 finalUpdate구현 부분이다.

뭐 딱히 특별한 점은 없다.

부모의 좌표계산이 다 끝났다면 자식의 finalUpdate부분을 호출 해준다.

자식은 다시 자신의 finalUpdate를 호출한다.

이렇게 자식, 부모 UI를 설정 해주도록 하자.

예상대로라면 이런식으로 뜨기를 원한다.

render 할 때 이부분 원래 GetPos() -> GetFinalPos()로 변경해주도록 하자.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글