UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 12. 17. 17:22[Part1] 9.언리얼C++ 설계(3) - 델리게이트

느슨한 결합(Loose Coupling) 강한 결합과 느슨한 결합 강한 결합(Tight Coupling) 클래스들이 서로 의존성을 가지는 경우를 의미한다. 아래 예시에서 Card가 없는 경우 Person이 만들어질 수 없다. 이 때 Person은 Card에 대한 의존성을 가진다고 한다. 핸드폰에서도 인증할 수 있는 새로운 카드가 도입된다면? 느슨한 결합(Loose Coupling) 실물에 의존하지 말고 추상적 설계에 의존하라. (DIP 원칙) 왜 Person은 Card가 필요한가? → 출입을 확인해야 하기 때문 출입에 관련된 추상적인 설계에 의존하자. ICheck를 상속받은 새로운 카드 인터페이스를 선언해 해결 이러한 느슨한 결합 구조는 유지 보수를 손쉽게 만들어 줌. 기존 코드 class Card { ..

UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 11. 25. 18:39[Part1] 8.언리얼C++ 설계(2)-컴포지션

언리얼 오브젝트의 컴포지션 컴포지션(Composition) 객체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지보수가 어려움. 컴포지션은 객체 지향 설계에서 Has-A 관계를 구현하는 설계 방법 컴포지션의 활용 복합적인 기능을 가진 거대한 클래스를 효과적으로 설계하는데 유용하게 사용할 수 있음. 아래 코드는 어떤 사람이 카드를 소유하는 개념을 컴포지션을 사용해서 구현한 예시 class Card { public: CarD(int InId) : Id(InId) {} int Id = 0; }; class Person { public: Person(Card InCard) : IdCard(InCard) {} protected: Card IdCard; }; 모던 객체 설계 기법과 컴포지션 좋은 객..

[Unity] 모바일에서 Input.GetMouseButton이 안먹힌다면...
Unity/TroubleShooting 2023. 11. 13. 22:54[Unity] 모바일에서 Input.GetMouseButton이 안먹힌다면...

🚩개요 회사 프로젝트에서 특정 씬을 갔다오면 Input.GetMouseButtonDown() Input.GetMouseButton() Input.GetMouseButtonUp() 3총사가 안먹혔다. 찾고보니 골때리는 해결법이라서 기록해둔다. 🔥본문 결론부터 말하자면 원인은 LeanTouch라는 에셋이었다. 이 에셋의 LeanTouch 컴포넌트를 보면 Disable Mouse Emulation 이라는 bool 변수가 있다. 이 변수가 어떤짓을 해버리냐면... 바로 Input.simulateMouseWithTouches 를 false로 만들어버린다...!! 저게 false가 돼버리면 터치 입력을 마우스 입력으로 받아들이질 않는다. (기본값은 당연히 true) 심지어 LeanTouch는 기본값으로 Input...

UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 11. 12. 18:03[Part1] 7.언리얼C++ 설계(1)-인터페이스

언리얼 C++ 인터페이스 인터페이스란? 객체가 반드시 구현해야 할 행동을 지정하는데 활용되는 타입 다형성(Polymorphism)의 구현, 의존성이 분리(Decouple)된 설계에 유용하게 활용. 언리얼 엔진에서 게임 콘텐으를 구성하는 오브젝트의 설계 예시 월드에 배치되는 모든 오브젝트. 안 움직이는 오브젝트를 포함(Actor) 움직이는 오브젝트(Pawn) 길찾기 시스템을 반드시 사용하면서 움직이는 오브젝트 ⇒ (INavAgentInterface 인터페이스를 구현한 Pawn) 예제를 위한 클래스 다이어그램 수업에 참여하는 사람과 참여하지 않는 사람의 구분 수업에 반드시 참여해야 하는 학교 구성원: 학생, 선생 수업에 참여하지 않는 학교 구성원: 교직원 수업 행동에 관련된 인터페이스: ILessonInte..

UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 11. 12. 16:59[Part1] 6.언리얼 오브젝트 리플렉션 시스템 2

실습 예제를 위한 클래스 다이어그램 지난 프로젝트에 이어서 예제 구현 어떤 학교에서 학생과 교수가 함께 수업하는 상황의 구현 학교 정보는 GameInstance에서 지정 UObject를 상속받는 3개의 클래스 인물 클래스 Person 학생 클래스 Student 선생 클래스 Teacher 언리얼 오브젝트의 속성과 함수 클래스에 설정할 프로퍼티 정보 Person에는 DoLesson이라는 가상 함수가 있음. Student의 DoLesson은 수업을 듣는 행동 Teacher의 DoLesson은 수업을 가르치는 행동 1. `.generated.h` 헤더 `#Include`는 제일 밑에 있어야한다. (그렇지 않으면 컴파일 시 에러) 2. `TEXT()`의 포맷으로 `FString`을 넘길때는 앞에 `*(포인터)`를..

[WinForm] 픽셀 이동 툴 개발
기타 개발 관련/윈폼 2023. 11. 10. 00:31[WinForm] 픽셀 이동 툴 개발

🚩개요 회사에서 만드는 픽셀 게임 프로젝트가 있다. 게임에 쓰이는 리소스를 외주를 맡겨서 추가로 받았는데, 받고 보니 이미지의 픽셀위치를 좀 이동시켜야했다. 한두장이면 이미지 툴에서 작업하겠지만 양이 상당했기때문에 코드로 한번에 옮겨버리는게 낫지않을까 싶어서 작업하게됐다. 처음에는 대충 Unity로 개발할까 싶었지만 C#의 이미지 관련 API를 쓸려면 프레임워크를 Unity프로젝트에 받아야해서 번거롭고 굳이 무거운 Unity 프로젝트를 새로 만들바에야 그냥 윈폼으로 작업했다. 🔥본문 결과물을 먼저 보자면 이렇다. 📝기능 설명 1.이미지 불러오기 파일 선택 창이 열리며 이미지 파일을 다중으로 불러올 수 있다. 2.불러온 이미지 리스트 이미지를 불러오면 경로와 함께 작은 미리보기 이미지를 붙여뒀다. 3.이미..

image