김현우
  • Unity UI Toolkit을 활용한 Custom Package 만들기 (1)
    2023년 03월 12일 23시 06분 40초에 업로드 된 글입니다.
    작성자: kugorang
    728x90

    벌써 글또 8기 3회차 마감일이다. 시간 참 빠르다. 함께 사이트 프로젝트를 진행하던 분과 저녁 약속이 있어 5호선 장한평역 근처에서 감자탕 먹고 탐앤탐스로 와서 블로그 글을 마무리하고 있다.

     

    오늘의 주제

     

    현재 진행 중인 사이드 프로젝트 중에 진행이 거의 마무리 된 프로젝트의 개발 회고글을 작성하려 한다.

     

    원래는 다른 프로젝트로 비슷한 주제의 글을 작성하려 했는데, 이 프로젝트가 더 많이 진행되기도 했고 웹 프론트와 비슷한 기술이 사용되어 다른 글또 참여자 분들이 부담 없이 보실 수 있지 않을까 하여 이 프로젝트를 선택하여 글을 작성하게 되었다.

     

    계기

     

    브릿지라는 대학생 연합게임개발동아리에서 한 분이 UI Toolkit라는 기술에 관련된 Unity의 Custom Package를 만들고 싶어 같이 할 사람을 모집한다는 글을 작성하셨다.

    https://github.com/orgs/BRIDGE-DEV/discussions/4

     

    Unity Custom Editor 스터디 모집 · BRIDGE-DEV · Discussion #4

    안녕하세요..! 브릿지 10기 이정안입니다. 제가 첫 글을.. 유니티에서 밀고 있는 3세대 UI..! [UI ToolKit]을 활용한 Custom Editor를 제작하고 패키지매니저로 배포를 해보는 프로젝트를 진행하고자 합니

    github.com


    안 그래도 글을 작성하신 분이 좋은 실력을 갖추고 계신다는 이야기를 많이 들어 함께 프로젝트를 해보고 싶은 생각이 있었는데 내가 관심있던 주제로 프로젝트를 진행한다고 하셔서 글을 보자마자 고민 없이 Github Discussion 쪽에 바로 댓글을 달았던 걸로 기억한다.

     

    또 하나의 이유는 공부하고 싶었던 최신 기술이었다는 점이다.

     

    Unity 엔진은 매년 두 번의 테크 스트림 버전과 한 번의 LTS 버전을 출시한다. 보통 회사에서는 안정적인 개발 환경 구축을 위해 LTS 버전을 많이 쓰고, 현재 가장 최신의 Unity LTS 버전은 2021.3 버전이다. 스마트폰이 새로 나오면 어떤 점이 개선됐는지, 새로 추가됐는지 찾아보듯이 나는 Unity도 LTS 버전이 나오면 어떤 내용이 바뀌었나 항상 확인하는 편이다.


    이번 Unity 2021 LTS 버전도 Unity Blog 등을 통해 새로운 특징을 확인하던 중 그 중 UI Toolkit 이라는 기술이 1.0으로 정식 릴리즈 됐다는 소식이 가장 관심이 갔었다.

     

    UI Toolkit이란?

     

    Unity에서 공식적으로 제작한 좋은 자료가 있어 자세한 소개는 아래 링크로 대신한다.

     

    1. https://blog.unity.com/kr/engine-platform/whats-new-in-ui-toolkit

     

    UI 툴킷에서 새롭게 선보이는 기능 | Unity Blog

    UI 툴킷에서 직접 테두리 라운딩, 색상, 크기, 텍스트를 설정하여 텍스처리스 UI를 생성하세요. Photoshop에서 이미지를 생성하거나 임포트할 필요가 없으므로 도구 전환으로 낭비되는 시간을 크게

    blog.unity.com

     

    2. https://youtu.be/KrjclAb5XvU?t=1290 

    '기존 UGUI를 쓰던 사람이 이걸 왜 꼭 배워야 하나요?' 에 대한 답이 있다.

     

    가장 인상 깊었던 내용은 웹 프론트의 개념을 대부분 차용했다는 점이다. 프론트의 기초인 HTML, CSS, JS를 각각 UXML, USS, C# Script로 치환하여 생각하는 것이 가능하다.

     

    그리고 기존 Unity UI (a.k.a UGUI) 시스템에는 성능상의 문제가 되는 부분이 많았지만 이를 안고 갔었는데 새로 나온 UI Toolkit을 사용하면 그동안의 문제가 거의 다 해결된다는 점도 인상 깊었다.

     

    감히 예측한다면 최근까지 웹에서 퍼블리싱을 하시던 분들이 몇 년 안에 Unity를 사용하는 회사로 이직해 게임 UI를 제작할 수 있겠다는 생각도 들었다.

     

    프로젝트 진행 방향

     

    프로젝트는 나를 포함해 총 두 명이서 약 2달 동안 진행되었다. 현재는 메인 기능 작업이 끝나 Custom Package 배포를 위한 개선 작업을 진행 중이다.

     

    첫 회의는 디스코드를 통해 간단히 인사를 나누고 대략적인 큰 그림을 공유하고, 차주에 함께 하는 분과 광화문 근처에서 저녁 식사하고 근처 이디야 커피에서 자세한 방향성을 잡았었다.

     

    홍콩식 짜장이었던 걸로 기억한다. 맛이 특이했고, 무난했다.

     

    네이버 예약해서 서비스로 나온 메뉴였다.

     

    식사 이후 다시 한 번 느꼈던 점은 프로젝트 진행을 위해 꼭 만날 필요는 없지만, 프로젝트 초창기에는 안면을 트고 같이 하는 동료와 친밀감을 형성하는 것은 그 이상의 가치가 있다고 생각한다. 바야흐로 코로나19로 인한 언택트 시대의 개막이 됐다고는 하지만 아무래도 대면을 통해 비언어적 의사소통을 통한 협업 방식이 일의 효율성 측면에서 더 좋다는 것은 부정하기 힘들다고 생각한다.

     

    이 날 정해진 프로젝트 컨셉은 "Unity에서 발생하는 Input을 저장하고,나중에 Replay 할 수 있는 시스템 개발" 이었다.

     

    회의를 거쳐 논의된 사항은 다음과 같았다.

    • 최소한의 목표를 우선 수행하고 이후 목표를 늘리는 방식으로 프로젝트를 진행
    • 프로젝트 마감 기간은 올해 2월 말까지로 설정 (약 두 달)
    • 현실적인 작업 수행을 위해 키보드와 마우스만을 사용한다는 것을 가정
    • 매주 비대면 회의를 진행하여 작업 진행 상황 확인

     

    이후 역할 분배를 진행했다. 함께 하는 분이 Play 시 키 입력 감지하여 파일 입출력을 하는 시스템과 Custom Package 배포와 관련된 내용을 담당하기로 하셨고 나는 UI Toolkit을 활용한 Editor Window 제작을 주로 맡기로 했다.

     

    마지막으로 가장 어려운 Custom Package의 이름을 정하는 것을 진행했는데 "다시"의 의미인 "Re"라는 접두사와 이 프로젝트의 핵심 개념인 "Input"을 연결하여 "ReInput"으로 패키지 이름을 정하고 회의는 마무리되었다.

     

    마치며

    음... 2회차 때도 고민했던 내용이지만 프로젝트 회고글을 어느 정도의 분량으로 써야 할지 참 고민이 많았다가 우선 이번 회차에는 여기서 끊어보려 한다.

     

    다음 회차 글에는 프로젝트 진행 순서와 문제가 발생했던 내용, 그리고 해당 내용의 Trouble Shooting을 어떻게 했는지를 주로 작성하고 다다음 회차 때는 프로젝트 진행을 하며 기술적으로, 나의 개인적으로 느꼈던 점을 각각 작성해야겠다.

     

    끝!

    728x90
    댓글