컨텐츠로 건너뛰기

디렉터리와 namespace 구조

개발에 관심이 있으신가요?

Project EAUploader는 개발 멤버를 항상 모집하고 있습니다! 이야기만 들어 보셔도 괜찮습니다! 꼭 프로젝트의 Discord 서버에 와 주세요. 참여하기



이 문서는 EAUploader v1.6.2의 내용을 기준으로 합니다.

디렉터리 구조


EAUploader는 VPM 패키지 tech.uslog.eauploader로 배포됩니다. 패키지의 주요 디렉터리 구조는 다음과 같습니다.

tech.uslog.eauploader/
├── package.json 패키지 정보(버전, 의존성)
├── CHANGELOG.md 변경 이력
├── Docs/ 사양서(영어)
├── Editor/ 에디터 확장(EAUploader.Editor 어셈블리)
│ ├── EAUploader.Editor.asmdef
│ ├── Public EAUploader API/ 외부 도구용 공개 API(클래스 하나당 파일 하나)
│ ├── Scripts/
│ │ ├── EAUploaderCore.cs 시작·초기화 처리, 전역 상태
│ │ ├── EAUploaderEditorManager.cs 편집 도구 등록 관리
│ │ ├── EAUPluginAttribute.cs [EAUPlugin] 속성
│ │ ├── AvatarUploader.cs 빌드·업로드 처리
│ │ ├── AssetProcessor.cs 에셋 가져오기 시 처리
│ │ ├── Config.cs 설정 파일(settings.json)
│ │ ├── LanguageUtility.cs, T7e.cs 다국어 지원
│ │ ├── ThemeUtility.cs 테마
│ │ ├── CustomPrefabUtility/ 관리용 Prefab Variant, 태그, 미리보기, 셰이더 확인, VRM 변환, 이전, 삭제
│ │ ├── Coexistence/ AvatarOptimizer와의 공존
│ │ ├── VRCSDK/ 아바타 성능 계산
│ │ └── Feedback/, SubWindow/ 피드백 전송·환영 화면(현재 미사용)
│ └── Resources/
│ ├── Localization/ UI 번역 파일(ja.json, ko.json)
│ ├── Message/ 도움말 메시지(언어별)
│ ├── Shaders/ AlwaysShow.shader(미리보기 마커), TextureAdjust.shader(텍스처 편집)
│ └── UI/
│ ├── EAUploader.cs 메인 창
│ ├── MainWindow.uxml
│ ├── styles.uss / tailwind.uss
│ ├── Components/ 자체 UI 컴포넌트
│ ├── Modals/ 창 안에 표시하는 모달
│ ├── TabContents/
│ │ ├── AvatarList/ 아바타 목록
│ │ ├── Setup/ 편집 화면
│ │ │ └── Editor/ 기본 편집 도구(Common, ViewpointPositionEditor, ShapeKeyEditor, TextureEditor, OutfitTool)
│ │ ├── Upload/ 업로드 폼
│ │ └── ImportSettings/ EA Library 기사(현재 화면에 표시되지 않음)
│ └── Windows/ 대화상자, 오류 보고, VRM 변환 창
├── Runtime/ 런타임 컴포넌트(EAUploader 어셈블리)
│ ├── EAUploader.asmdef
│ └── Components/ EAUploaderMeta, EAUploaderOutfit, AvatarTagComponent
└── .vpm/, .github/ VPM 저장소 생성·배포용

어셈블리


어셈블리위치대상 플랫폼내용
EAUploader.EditorEditor/EditorEAUploader 본체. UI, 아이템 관리, 편집 도구, 업로드 처리, 공개 API
EAUploaderRuntime/모두아바타에 붙이는 컴포넌트

EAUploader.Editor는 다음 Version Defines를 정의합니다.

심볼패키지조건
HAS_VRMjp.pokemori.vrm-converter-for-vrchat41.1.0 이상
HAS_AAOcom.anatawa12.avatar-optimizer1.7.0 이상
HAS_MAnadena.dev.modular-avatar1.9.0 이상

EAUploader(Runtime)는 VRChat SDK - Avatars(com.vrchat.avatars)가 있을 때 VRC_SDK3A를 정의합니다.

namespace


namespace주요 클래스내용
EAUploaderEAUploaderCore, EAUploaderEditorManager, EditorRegistration, EAUPluginAttribute, AvatarUploader, LanguageUtility, T7e, Config시작 처리, 편집 도구 등록, 업로드, 다국어 지원 등의 핵심 기능
EAUploader.CustomPrefabUtilityManagedPrefabs, PrefabManager, PrefabInfo, TagManager, PrefabPreview, ShaderChecker, Utility, VRMImporter관리용 Prefab Variant, 메타데이터, 태그, 미리보기 이미지, 셰이더 확인, VRM 변환, 이전, 삭제
EAUploader.UIEAUploader, ThemeUtility메인 창과 화면 전환, 테마
EAUploader.UI.AvatarListMain아바타 목록(internal)
EAUploader.UI.SetupMain, ViewpointPositionEditor편집 화면과 뷰포인트 위치 에디터
EAUploader.UI.Setup.EditToolsEditToolModal, EditToolSession, ToolModalFrame, EditToolUtility 등기본 편집 도구와 공통 기반(internal)
EAUploader.UI.UploadUploadForm업로드 폼(internal)
EAUploader.UI.ModalsImportModal, SettingsModal, ClothSettingModal, TagFilterModal, TagSettingsModal, PrefabPreviewModal 등창 안에 표시하는 모달
EAUploader.UI.ComponentsModal, ToastManager, ShadowButton, MaterialIcon, HelpButton, DropdownFieldPro, Preview 등자체 UI 컴포넌트
EAUploader.UI.WindowsDialogPro, Logger대화상자, 오류 보고, 로그 출력
EAUploader.Editor.APICoreAPI, LanguageAPI, UploadAPI공개 API
EAUploader.Editor.Plugin.APIPluginAPI공개 API(확장 기능 등록)
EAUploader.Editor.Prefab.APIPrefabAPI, PrefabPreviewAPI, ShaderAPI, PrefabUtilityAPI, VRMAPI공개 API(프리팹 조작)
EAUploader.Editor.Resource.APIEAUResourceAPI, HelpButtonAPI, LinkAPI, MaterialIconAPI 등공개 API(스타일, UI 컴포넌트)
EAUploader.ComponentsAvatarTagComponent, EAUploaderMeta, EAUploaderOutfit런타임 컴포넌트

EAUploader.Editor.*.API는 외부 도구에서 사용하는 것을 전제로 한 공개 API입니다. 내부 구현(EAUploader나 EAUploader.CustomPrefabUtility)을 얇게 감쌉니다. 자세한 내용은 ‘API 레퍼런스’를 참조하세요.

클래스 관계


주요 클래스의 관계는 다음과 같습니다.

EAUploaderCore([InitializeOnLoad])
├── EAUploaderEditorManager …… 편집 도구(EditorRegistration) 등록·보관
├── ShaderChecker ………………… 프리팹의 셰이더 확인
├── PrefabManager ………………… 관리용 Prefab Variant 목록(PrefabInfo)과 메타데이터
│ ├── ManagedPrefabs ……… Variant 생성·복제·경로 관리
│ ├── TagManager ………… 태그와 태그 그룹
│ └── PrefabPreview ……… 미리보기 이미지 생성·저장
└── UI.EAUploader(메인 창)
├── UI.AvatarList.Main …… 아바타 목록
├── UI.Setup.Main ……………… 편집 화면(편집 도구 목록, 항목 정보)
│ └── UI.Upload.UploadForm → AvatarUploader → VRChat SDK
└── modal / toasts ……………… 공통 모달과 알림

각 화면은 EAUploaderCore.selectedPrefabPath(선택한 아이템의 경로)를 공유합니다.

처리 흐름의 자세한 내용은 ‘Editor’를 참조하세요.