Skip to content

기타 유틸리티 ​

메뉴 하나로 완결되는 소소한 기능들을 모아 놓았습니다.

Assets / Copy GUID ​

Project에서 에셋을 우클릭 → Copy GUID로 해당 에셋의 GUID를 클립보드에 복사합니다.

Assets / Copy Assets With Dependency ​

Project에서 복제하려는 에셋들을 한꺼번에 선택하고 우클릭 → Copy Assets With Dependency. 선택한 에셋을 새 GUID로 통째로 복제하고, 복제본끼리의 참조를 다시 연결합니다. "배포 모델의 머티리얼을 수정한 변형 버전을 원본을 덮어쓰지 않고 만들고 싶을 때" 같은 상황에 유용합니다.

  • 의존 관계를 자동으로 수집하지는 않습니다 — 함께 복제하려는 의존 에셋 (머티리얼·텍스처 등)도 포함해서 선택하세요
  • 선택에 포함하지 않은 에셋에 대한 참조는 원본 에셋을 가리킨 채 유지됩니다
  • 폴더를 선택하면 폴더명 copy/에 구조째로 복제됩니다
  • .meta는 임포트 설정을 유지한 채 GUID만 교체하여 복사됩니다
크레딧

Narazaka 님의 CopyAssetsWithDependency (Zlib License, 원작: k7a 님의 Qiita 글)를 수정하여 이식한 것입니다.

컴포넌트 전체 프로퍼티 복사 ​

컴포넌트의 ⋮ 메뉴 (또는 우클릭)에 2개의 항목이 추가됩니다:

  • Copy Component All — 전체 프로퍼티를 복사
  • Paste Component All As New — 별도의 컴포넌트로 붙여넣기 (원본과는 독립된 인스턴스)

Unity 표준의 Copy Component / Paste Component As New와 달리, 참조까지 포함해서 한꺼번에 복제하고 싶을 때 사용합니다.

StateMachineBehaviour 복사 & 이름 변경 ​

Animator의 State에 붙은 StateMachineBehaviour의 ⋮ 메뉴에 추가됩니다:

  • Copy Behaviour / Paste Behaviour As New — 별도 인스턴스로 복제
  • Rename — Behaviour 서브 에셋의 이름 변경

Humanoid 포즈 리셋 ​

Animator 컴포넌트의 ⋮ 메뉴 (또는 우클릭)에 Reset Humanoid Pose가 추가됩니다. 포즈를 잡느라 움직인 본을 모델의 임포트 시 포즈 (T 포즈 등)로 한꺼번에 되돌립니다.

  • 매핑된 모든 Humanoid 본이 대상입니다 (손가락·눈·턱까지). 스케일은 건드리지 않습니다
  • 레퍼런스 포즈는 Avatar 에셋 자체의 스켈레톤 정보에서 가져오므로, Avatar가 FBX 바깥에 있는 (복사된 .asset 등) 모델에서도 동작합니다
  • Humanoid가 아니거나 Avatar가 설정되지 않은 경우에는 다이얼로그로 알리고 아무것도 하지 않습니다. Undo 1회로 되돌릴 수 있습니다
크레딧

gatosyocora 님의 VRCDeveloperTool (zlib License)의 HumanoidPoseResetter를 원안으로 하여, 레퍼런스 포즈를 가져오는 방식을 바꿔 구현한 것입니다.

EditorOnly 태그 단축키 전환 ​

GameObject/Toggle EditorOnly Tag (Alt+Shift+S) — 자세한 내용은 Hierarchy 확장을 참조하세요.

Sort SerializedUdonPrograms Worlds SDK ​

상단 메뉴의 さたにあしょっぴんぐ/エディタカスタマイザー/Misc/Sort SerializedUdonPrograms (사타니아 쇼핑 / 에디터 커스터마이저 / Misc / Sort SerializedUdonPrograms) — 월드 제작용입니다. SerializedUdonPrograms 아래에 흩어져 있는 에셋을 대응하는 Udon 프로그램의 폴더로 분류하여 정리합니다.

Package Manager 즐겨찾기 (Favorites) ​

자주 쓰는 패키지를 위해 매번 탭을 옮겨 가며 검색할 필요가 없어집니다.

  • 패키지를 선택하면 상세 패널의 Install 버튼 옆에 ★ 버튼이 붙습니다. 클릭하면 즐겨찾기에 등록 / 해제됩니다 (등록된 것은 금색)
  • 스코프 전환 드롭다운에 ★ Favorites 탭이 추가되어, 등록한 패키지 / 에셋을 한눈에 볼 수 있습니다
  • 패널 오른쪽 위의 「+」 버튼으로 Package Manager에 나오지 않는 것도 등록할 수 있습니다 (파일 / 폴더는 패널에 드래그 & 드롭해도 추가됩니다):
    • .unitypackage 파일
    • UPM / VPM 형식 폴더 (package.json이 들어 있는 폴더. 표시 이름과 버전은 package.json에서 읽습니다)
    • git URL (https://….git?path=…#ref 형식. 표시 이름은 URL에서 추측되며, 첫 Install 후 실제 패키지 이름으로 갱신됩니다)
  • 목록의 행에서 직접 조작할 수 있습니다:
    • Install (UPM / git URL / UPM 폴더) — Package Manager를 거치지 않고 프로젝트에 추가. git URL은 URL에서, UPM 폴더는 file: 의존성으로 추가합니다 (이미 들어 있으면 「導入済み」(설치됨) 표시)
      • git URL Install이 git의 소유자 검사에 거부된 경우 (exFAT / FAT32처럼 소유자를 기록하지 않는 드라이브의 프로젝트에서 fatal: not in a git directory / dubious ownership이 됨. Package Manager 표준 Add package from git URL도 동일) 원인과 회피 명령 git config --global --add safe.directory "<드라이브>:/*"를 대화 상자로 안내합니다 (「コマンドをコピー」로 클립보드에 복사)
    • Import (My Assets / .unitypackage) — 다운로드된, 또는 파일의 .unitypackage를 직접 임포트 (아직 다운로드하지 않았다면 안내를 표시)
    • 開く (열기) — Package Manager에서 해당 패키지를 표시. .unitypackage 파일과 설치되지 않은 UPM 폴더는 탐색기에서 위치를 엽니다
    • 경로를 찾을 수 없는 (이동·삭제된) 등록은 빨간 글자로 표시되고 Install / Import를 누를 수 없게 됩니다 (삭제는 가능)
  • 이미 프로젝트에 들어 있는 git / 로컬 (file:) 유래의 패키지를 ★로 등록하면 URL / 폴더도 함께 기록되므로, 다른 프로젝트에서도 그대로 Install할 수 있습니다

Unity 2022.3 전용

Unity 6000.0 이후에는 Package Manager의 내부 구조가 새롭게 바뀌었기 때문에 이 기능은 비활성화됩니다 (지원 예정).

GameView 스크린샷 / 녹화 ​

GameView 확장 페이지로 이동했습니다.

SceneView MSAA / 선택 아웃라인 ​

SceneView 확장 페이지로 이동했습니다.

창 탭 우클릭 메뉴 확장 ​

Editor Setting의 DockArea 항목에서 토글합니다. 개발자용으로, 탭 우클릭 메뉴에 「WindowのTypeを出力」(Window의 Type 출력) 항목 (해당 창의 클래스 이름을 로그로 출력)을 추가할 수 있습니다 (기본 OFF, 표시 여부는 Editor Setting에서 설정).

VPM Resolver의 하얀 제목 없는 창 대응 ​

VRChat의 VPM Resolver (com.vrchat.core.vpm-resolver)는 시작 시 [InitializeOnLoad]에서 패키지 해결 여부를 확인하고, 미해결이 있으면 확인 대화상자 → 「Show Me What's Missing」으로 Package Resolver 창을 엽니다. Unity 2022.3의 에셋 임포트 워커 (별도 프로세스의 Unity.exe -batchMode)에서도 같은 코드가 실행되는데, 거기서는 대화상자가 자동 취소되어 창 생성으로 진행되기 때문에 작업 표시줄에만 나타나는 하얗고 제목 없는 Unity 창 (개수 = 시작된 워커 수)이 남습니다 (Resolver 0.1.29 기준 미수정).

SCE는 이를 우회합니다. UI가 없는 프로세스 (임포트 워커 / 배치 모드)에서만 동작하며 일반 에디터에서는 아무것도 하지 않습니다. ON/OFF는 Editor Setting의 BugFix 항목 (기본 ON)에서 전환합니다.

  • Resolver보다 먼저 초기화된 경우, 그 프로세스에서의 시작 확인 자체를 건너뛰게 합니다
  • 이미 창이 만들어진 경우, 모든 초기화가 끝난 시점에 닫습니다 (Logs/AssetImportWorker*.log에 「VPM Resolver がヘッドレスプロセス … に作ったウィンドウを閉じました」(헤드리스 프로세스에 만든 창을 닫음) 줄이 표시됩니다)
  • 만약을 위해 그 프로세스에서는 Package Resolver 창을 여는 처리도 비활성화합니다

TIP

근본적으로는 프로젝트의 Packages/vpm-manifest.json에 해결할 수 없는 항목이 남아 있는 상태 (시작할 때마다 Resolver 대화상자가 나오는 상태)를 고치면 발생하지 않습니다.

Harmony가 동작하지 않는 환경 (Apple Silicon Mac) ​

Apple Silicon Mac에서는 VRChat SDK에 포함된 Harmony (0Harmony 2.0.5)가 macOS의 메모리 보호 (W^X)에 대응하지 않아, SCE / Modular Avatar / NDMF의 Harmony 패치가 모두 mprotect returned EACCES로 실패합니다 (SCE의 Harmony 의존 기능은 동작하지 않습니다).

SCE는 이 실패를 첫 번째 패치에서 감지하여 패치마다의 예외 대신 경고 1회로 정리합니다 (모든 초기화가 끝난 뒤 1회만 재시도하므로, 아래 패키지가 설치되어 있으면 초기화 순서와 관계없이 적용됩니다). 그래도 적용되지 않으면 macOS에서는 anatawa12 님의 Harmony Patches for Apple Silicon (native & Rosetta) (com.anatawa12.apple-silicon-harmony)를 설치할지 묻는 대화 상자를 표시합니다. 「インストールする」(설치)를 누르면 VPM 저장소 (https://vpm.anatawa12.com/vpm.json)에서 받아 프로젝트에 추가하고 ALCOM / VCC에도 저장소를 등록합니다 (VPM Resolver가 없는 프로젝트에서는 저장소 등록 페이지를 엽니다). 「今後表示しない」(다시 표시하지 않음)는 Editor Setting의 BugFix 항목에서 되돌릴 수 있고, 같은 곳에 설치 버튼도 있습니다.

Light Probe Generator (월드용) ​

상단 메뉴의 さたにあしょっぴんぐ/エディタカスタマイザー/Misc/Light Probe Generator에서 엽니다. 지정한 Box 범위에 LightProbe를 격자 형태로 자동 배치하는 도구입니다.

  • 配置領域 (배치 영역)은 창이 열려 있는 동안 SceneView에 녹색 프레임으로 표시되며, 모서리/면 드래그와 중심 핸들로 직접 편집할 수 있습니다. 「選択オブジェクトから範囲を取得」(선택 오브젝트에서 범위 가져오기)으로 월드의 지형 등에서 한 번에 설정할 수도 있습니다
  • 配置間隔 (m) (배치 간격 (m))으로 격자의 촘촘함을 지정합니다. 격자는 영역 안에 중앙 정렬로 깔립니다
  • 配置禁止領域 (배치 금지 영역)을 여러 개 추가할 수 있습니다 (SceneView에 빨간 프레임으로 표시·편집 가능). 금지 영역 안의 격자점은 건너뜁니다
  • 생성 대상은 씬 위의 LightProbeGroup입니다. 같은 이름의 그룹이 있으면 새로 만들지 않고 덮어써서 업데이트하므로, 범위를 조정하면서 몇 번이든 다시 생성할 수 있습니다. 프로브가 적을 때는 배치 위치를 나타내는 노란 프리뷰 점도 표시됩니다

MIT License