[Private UPM 개발(2/4)] Verdaccio 레지스트리 서버 구축
·
유니티(Unity)/툴 개발
📌 개요 이전 포스터에서 오라클 클라우드 인스턴스를 제작하고 연결하는 작업까지 모두 마쳤습니다. 이제 본격적으로 인스턴스에 Verdaccio 레지스트리 서버를 구축하도록 하겠습니다. 📌 Verdaccio란 무엇인가? https://verdaccio.org/docs/what-is-verdaccio/ What is Verdaccio? | VerdaccioVerdaccio is a lightweight private npm proxy registry built in Node.jsverdaccio.org Verdaccio란 무엇인가? verdaccio는 Node.js로 구축된 private npm 레지스트리 서버입니다. 사내 또는 개인 프로젝트에서 npm 패키지를 비공개로 배포하거나, npm 캐시 ..
[Private UPM 개발(1/4)] 클라우드 컴퓨팅을 위한 가상머신 생성
·
유니티(Unity)/툴 개발
📌 개요 이전 포스트에서 OpenUPM 레지스트리 서버를 활용한 UPM 제작 방법을 알아봤습니다. 하지만 이 경우에는 모든 코드가 공개(Public)된다는 점에서 다소 아쉬움이 있었는데요! 그래서 이번에는 비공개(Private) UPM을 제작하는 방법에 대해 알아보겠습니다. 사실 openUPM을 사용하지 않는 대신, verdaccio라는 서버를 사용한다는 점에서 큰 차이가 없습니다. 하지만 이 verdaccio 서버를 열기 위해선 직접 서버를 구동시켜야 합니다..!(이런 면에서는 openUPM이 엄청 편하네요) 그래서 저희는 이제 verdaccio 서버를 24시간 내내 돌려줄 가상머신이 필요하답니다. 📌 클라우드 컴퓨팅을 위한 개인 서버 구축 1. 오라클 클라우드 계정 회원가입 및 로그인..
[Public UPM 개발(3/3)] OpenUPM 빌드 파이프라인 구축
·
유니티(Unity)/툴 개발
📌 개요 드디어 마지막 관문에 오신 것을 환영합니다! 이전 챕터에서 Git 메시지를 분석하여 자동으로 버전 관리를 할 수 있도록 했었죠? 이번에는 제작한 패키지를 OpenUPM에 등록하고 빌드 파이프라인을 세팅하는 작업을 할거예요. 그러면 마침내 여러분 만의 Unity Package Manager을 구축할 수 있답니다! 📌 Chapter 3. OpenUPM 빌드 파이프라인 구축 https://openupm.com/ Open Source Unity Package RegistryOpenUPM is a managed UPM registry with automatic build services for open-source Unity packages.openupm.com OpenUPM 이란? UP..
[Public UPM 개발(2/3)] Semantic-Release 자동화
·
유니티(Unity)/툴 개발
📌 개요 이전 포스터에서 위 사진처럼 여러분 만의 커스텀 패키지를 제작했습니다. 하지만 현재 구조에선 크게 2가지 문제점이 있습니다. 1. 버전 관리 불가능2. 패키지 간 종속성 협업을 하거나 패키지가 커지면 위 문제가 발생합니다. 그래서 오늘은 1번 문제(버전 관리)를 Github Actions을 활용하여 버전 관리를 자동화해보도록 하겠습니다. 📌 Chapter 2. Semantic-Release Workflow 자동화 Semantic-Release? 그게 뭐죠? 먹는 건가요? 아마 버전 관리 자동화를 처음 접하시는 분들은 위 개념이 생소할 수 있습니다. 간혹 Unity 패키지 종속성을 다루다보면 SemVer 에러를 볼 수 있는데, 그것과 큰 관련이 있어요. 먼저 Semantic..
[Public UPM 개발(1/3)] 로컬 커스텀 패키지 제작
·
유니티(Unity)/툴 개발
📌 개요 https://cookapps.com/story/151 저는 최근에 개발 레퍼런스로 Cookapps UPM을 정하고 저만의 라이브러리를 제작중입니다. ※ Cookapps에서는 사내 보안을 위해 AWS에 Verdaccio 서버를 올려 관리한답니다. 만약 모든 사람들에게 공유가 돼도 괜찮다면 openUPM을, 사내 또는 비공개로 관리한다면 Verdaccio을 사용하는 편이 좋습니다. ※ 결과물 미리보기 OpenUPM 레지스트리 서버를 호스팅하여 직접 개발한 커스텀 패키지들을 불러옵니다. 버전 관리와 종속성을 관리할 수 있습니다. 📌 Chapter 1. 로컬 커스텀 패키지 개발 이미 이전에 커스텀 패키지를 제작하는 방법은 포스팅한 적이 있습니다. 그래서 이번 포스터에서는 개념을..
[Unity 이론] 중복 없는 랜덤 요소 뽑기 (HashSet vs List 성능 분석)
·
유니티(Unity)/이론 정리
📌 개요  Unity에서 게임을 만들다보면 특정 리스트에서 중복 없이 랜덤 요소를 뽑는 기능이 자주 필요하곤 합니다. 아마 대부분은 다음과 같은 방법으로 로직을 작성할거라 생각합니다.List 중복 체크 방법List 중복 제거 방법HashSet 자료구조 활용      결론부터 말하자면... (일반적으로) HashSet 자료구조를 사용하는게 좋습니다.   [ HashSet 을 활용한 코드 보기 ]  private List GetNotDuplicateRandomList_HashSet(IList list, int count) { HashSet hashSet = new HashSet(list); List uniqueList = hashSet.To..
[Unity 이슈] Addressable & Android Build 문제 해결법 모음
·
유니티(Unity)/이슈 도감
📌 개요  만약 유니티 프로젝트에서 어드레서블을 사용할 때, 안드로이드 빌드 이슈가 종종 발생합니다. 그럴 때마다 ChapGPT 또는 구글링을 통해 해결하곤 합니다. 오늘은 제가 이때까지 어드레서블 이슈를 경험하며 얻었던 해결책을 정리할까 합니다. (사실 오늘 회사에서 어드레서블 빌드 문제로 2시간 동안 삽질함)   여러분은 저처럼 삽질하지 마시길...     📌 해결책 1. Addressables Groups 체크   [ Window ] - [ Asset Management ] - [ Addressables ] - [ Groups ] 클릭 Addressables Groups은 Asset을 그룹으로 관리하는 핵심 개념이예요. 먼저 위처럼 Group이 잘 추가됐는지 확인합니다.       여기서 중요한..
[EditorWindow] 기본적인 에디터 창 구축
·
유니티(Unity)/툴 개발
📌 개요     최근 Unity Editor 제작에 관심이 많습니다.현업에서 기획자 또는 아트를 위한 툴 제작게임 개발에 자주 사용되는 기능을 툴로 제작신규 프로젝트를 위한 기본 템플릿등등... 단순히 게임 컨텐츠 제작 뿐만 아니라, 툴을 직접 개발하는 경우도 많더라구요. 그래서 Unity Editor에 대해 기초부터 공부하고자 합니다.     📌 EditorWindow  EditorWindow : Unity Editor 내부에 개발자를 위한 도구나 툴을 제작할 수 있도록 돕는 클래스 Unity의 기본 제공 창인 Scene, Inspector, Console과 비슷한 동작을 하는 커스텀 창을 만들 수 있습니다. EditorWindow을 통해 주로 사용하는 주요 메서드와 이벤트를 살펴보도록 하겠습니다...
[EditorUtility.DisplayDialog] 팝업 창 제작
·
유니티(Unity)/툴 개발
📌 개요   Unity 에디터 툴을 만들 때 간단한 팝업 창을 표시하고 싶지 않나요? 오늘은 Unity에서 제공하는 기능 중 하나인 EditorUtility.DisplayDialog 메서드에 대해 알아보겠습니다.     📌 EditorUtility.DisplayDialog 1. 확인 및 취소 팝업창public static bool DisplayDialog( string title, // 팝업 창 제목 string message, // 팝업 창에 표시할 메시지 string ok, // 확인 버튼의 텍스트 string cancel = null // (선택) 취소 버튼의 텍스트);  시그니처는 위와 같습니다. 반환 값은 bool 형태로, ..
[FilePath] 에디터 환경 변수 저장
·
유니티(Unity)/툴 개발
📌 개요   Unity 에디터에서 툴을 개발할 때 데이터를 영구적으로 저장할 필요가 있습니다. A 개발자와 B 개발자가 해당 툴의 세팅을 서로 다르게 가져갈 수 있기 때문입니다.       예를 들어, Unity에서 제공하는 기본 레이아웃이 여기에 해당합니다. 개발자는 자신이 원하는 레이아웃을 선택할 수 있으며, Unity를 껐다 키면 그 상태를 유지합니다. 왜냐하면 레이아웃 데이터가 PC 로컬 환경에 저장되기 때문입니다.      레이아웃 데이터는 사용자 환경에 따라 위 경로(~/Preferences) 폴더에 저장됩니다. 이건 프로젝트 상위 폴더가 아닌, PC 로컬 환경에 저장되기 때문에 버전 관리에 포함되지 않습니다. 따라서 PC마다 사용자만의 에디터 환경을 구축할 수 있습니다. 오늘은 커스텀 에디..