C++/유니티 엔진 모작(일시중지)

[유니티 엔진 제작] 정적라이브러리 프레임워크 구성

나는야 개발자 2025. 2. 5. 00:07
반응형

1. GetMessage -> PeekMessage로 변경

 

* GetMessage

 - 프로세스에서 발생한 메시지를 메시지 큐에서 가져오는 함수
 - 아무 메시지도 없다면 아무 메시지도 가져오지 않음

 

* PeekMessage
- 메시지 큐에 메시지가 있으면 메시지를 가져오고 없으면 false를 반환
- 메시지 큐에 메시지 유무와 상관없이 함수가 리턴됨

첨부사진 1

- PeekMessage을 if문을 통해 메시지를 받았을때와 안받았을때로 나눠 else문에 게임 로직 처리 담당

 

2. 정적 라이브러리

*장점

- 시스템 환경이 변해도 앱에 아무런 영향이 없음

- 컴파일 시 필요한 라이브러리를 적재하기 때문에 이식성이 좋음

- 런타임 시 외부를 참조할 필요가 없기 때문에 속도가 빠름

 

*단점

- 같은 코드를 가진 프로그램을 실행할 경우 코드가 중복될 경우 그만큼 메모리 낭비 발생

- 라이브러리 변경 시 변경된 라이브 러리만 재배포 하는 것이 아닌 재 컴파일 후 재배포 해야함

 

3. 동적 라이브러리 

*장점

- 메모리 절약

- 보다 쉽게 패치하여 배포 가능

- 서로 다른 프로그램에서 동일한 함수 호출가능

- 프로그램 변경 시 라이브러리만 재배포하면 되어 유지보수가 쉬움

 

*단점

- 외부 의존도가 높기 때문에 이식성이 낮음

- 공유 라이브러리를 메모리에 올려놓고 해당 라이브러리를 찾아 접근해야해 속도가 느림

 

4. 다중 프로젝트

- 하나의 프로젝트에 모든 코드를 작성하게 되면 볼륨이 커지면 커질수록 컴파일과 빌드 시간이 늘어나기 때문에 프로젝트를 나누어 그 시간을 축소 시킬 수 있음

- 시간 축소와 코드 유지보수에 대한 장점이 존재

 

* 게임 로직용 프로젝트 추가 

첨부사진2

- 새 프로젝트 생성 -> 빈 프로젝트 -> 구성 형식: 정적 라이브러리 로 생성

 

* 코드용 공유 프로젝트 추가 

첨부사진3
첨부사진4

- 프로젝트 추가 -> 공유 항목 프로젝트 -> 이전에 만든 로직용 프로젝트에서 참조 우 클릭 -> 참조 추가 -> 공유 항목 프로젝트 추가

 

* 메인 프로젝트에 연결

첨부사진 5

- 메인 프로젝트에 로직용 프로젝트 연결

 

*테스트

첨부사진6
첨부사진7

- 첨부사진6처럼 cpp, h파일 추가 후

- ..과 \\을 이용해 경로 설정하여 헤더파일을 추가하면 해당 파일에 있는 클래스에 접근이 가능해짐

 

 

###############################################

- 2.5 while문 PeekMessage로 변경 및 라이브러리 설명

- 2.6 다중 프로젝트 추가 및 설정, 테스트

###############################################

반응형