[챗GPT로 코딩 공부] 유니티 RuleTile & RuleTileEditor 스크립트 코드 분석

내일배움캠프 수료생들은 챗GPT를 어떻게 개발 공부에 활용할까요?
Jun 26, 2024
[챗GPT로 코딩 공부] 유니티 RuleTile & RuleTileEditor 스크립트 코드 분석
✍🏼
챗GPT, 개발 공부에 있어서 든든한 친구 같은 존재이죠. 내일배움캠프의 수강생들도 혼자 공부할 때에는 챗GPT의 도움을 받고 있는데요. 오늘은 내일배움캠프 수료생들의 챗GPT 경험담을 보고, 여러분의 개발 공부에 적용해봅시다.
 

Unity RuleTile의 한계 극복: 맞춤형 타일 로직과 직관적인 에디터 인터페이스 개발

Unity에서 게임 맵을 타일맵(Tilemap)으로 관리할 때, 타일의 종류가 많아 일일이 배치하는 데 어려움을 겪었습니다. 물론 수작업으로 모든 맵을 구현할 수는 있지만 매우 비효율적이고 시간이 많이 든다는 단점이 있습니다. 이러한 문제를 해결하고 보다 효율적이고 직관적으로 타일을 관리하고 배치할 수 있도록, 인접한 타일 상태에 대한 특정 규칙을 통해 다른 모습을 가지도록 정의할 수 있는 RuleTile을 도입하기로 했습니다. 이를 통해 자동으로 알맞은 타일이 배치되어 작업 시간을 절약하고 유지보수를 용이하게 할 수 있었습니다.
그러나 Unity에서 기본으로 제공하는 RuleTile으로는 규칙을 지정하는 데에 한계가 있었습니다. 특정 조건에 따라 타일이 변화하는 등의 복잡한 타일 배치 패턴이나 논리를 구현하기 어려웠습니다. 따라서 RuleTile을 상속받는 전용 RuleTile을 만들어 사용하기로 하였습니다. Unity 공식 문서를 참고하여 어떤 메서드를 오버라이딩하고 구현하고, 어떤 정보를 추가해야 하는지 간단하게 알 수는 있었지만, 더욱 효율적으로, 더 깊이 사용하기 위해 RuleTile의 코드를 직접 살펴보기로 하였습니다. 또 Unity에서는 RuleTileEditor 에디터 스크립트를 통해 RuleTile에 대한 정보를 인스펙터에 표시하고 있습니다. 그런데 기본 에디터 스크립트로는 전용 RuleTile에서 추가된 정보를 직관적으로 나타내기 어려웠습니다. 따라서 전용 에디터 스크립트를 작성하기 위해 RuleTileEditor의 코드를 직접 살펴보기로 하였습니다. 그러나 코드의 분량이 워낙 많고 생소한 개념들도 많아 이를 해석하기 위해 ChatGPT의 도움을 받았습니다.
 
 

아이콘 리소스를 Base64 형태로 관리하는 이유

Q. 코드에서 아이콘 리소스를 Base64 형태로 직접 관리하는 이유와 이 방법의 장단점은? A. Base64로 인코딩된 리소스를 코드에 직접 포함하여 별도의 파일 없이 코드 내부에서 관리할 수 있고, 이에 따라 코드를 배포하는 데에 간편함. 또 코드와 리소스가 동기화된 상태로 유지되어 일관적이고, 리소스가 수정 또는 교체되는 것을 방지하여 보안 및 무결성을 유지할 수 있음. 그러나 파일 크기가 증가하거나 가독성이 떨어질 수 있고, 리소스를 수정하기 위해서는 Base64로 인코딩된 문자열을 다시 생성하는 등의 작업이 필요할 수 있음.
 
 

ReorderableList의 역할

Q. ReorderableList의 역할은? A. ReorderableList는 UnityEditor에서 제공하는 클래스 중 하나로, Unity의 커스텀 에디터에서 배열이나 리스트 형태의 데이터를 시각적으로 쉽게 편집할 수 있게 해 주는 유용한 도구임. 이를 이용해 리스트 항목을 추가, 제거, 재정렬할 수 있는 인터페이스를 제공할 수 있음. 항목의 추가, 삭제 및 재정렬 기능을 제공하고, 항목을 그리는 방식을 커스터마이징할 수 있도록 해줌. 또 헤더 등을 그리는 방식도 커스터마이징 할 수 있고, 항목이 추가되거나 삭제될 때, 리스트가 변경될 때 등의 이벤트에 대한 콜백을 제공하여 원하는 동작을 정의할 수 있음.
notion image
notion image
notion image
 

결과

검색을 통해서도 관련 자료를 얻기 힘들었던 스크립트의 구조를 이해하는 데 ChatGPT의 도움을 크게 받았고, RuleTile 및 RuleTileEditor를 맞춤형으로 완벽히 재구성할 수 있게 되어 아주 만족스러웠습니다. 다만 앞서 언급한 대화 일부 중 ReorderableList의 역할을 물어보았던 것처럼 질문이 너무 추상적이거나 광범위하면 깊이 있는 답변을 얻기가 힘들어집니다. 물론 이 때는 ReorderableList에 대해 전혀 모르는 상태였기 때문에 이렇게 물어볼 수 밖에 없었지만, 어떤 것을 위주로 설명해달라, 어떤 방식으로 사용하는지 알려달라 등 구체적인 질문일수록 원하는 내용에 대해 더 깊이있게 답변해주었습니다.
notion image
 
 
 

내일배움캠프가 여러분의 러닝메이트가 되어드리겠습니다

내일배움캠프의 많은 수강생들이 부트캠프 생활을 수료하고 현업에서 개발자로 활약하고 있습니다. 내일배움캠프는 모든 운영진이 교육, 특강, 12시간 밀착 케어, 찐한 관리, 인재 채용까지 열과 성을 다해 수강생들의 꿈을 지원하고 있습니다. 수많은 장애물을 넘을 수 있도록 내일배움캠프가 든든한 러닝메이트가 되어드리겠습니다. 내일배움캠프과 함께 여러분의 개발자 여정을 시작하세요.
 
 
CREDIT
글 | 김세진 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
Share article
Subscribe to our newsletter
RSSPowered by inblog