컨텐츠로 건너뛰기

Runtime

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

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



이 페이지에서는 Runtime 폴더에 있는 EAUploader 어셈블리를 설명합니다.

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

개요


EAUploader 어셈블리에는 아바타(프리팹)에 붙이는 컴포넌트가 들어 있습니다. 컴포넌트는 씬이나 프리팹에 저장되므로 에디터 전용인 EAUploader.Editor 어셈블리와 분리하여 모든 플랫폼용 어셈블리로 정의합니다.

파일클래스내용
Runtime/Components/AvatarTagComponent.csEAUploader.Components.AvatarTagComponent아바타에 붙이는 컴포넌트의 기본 클래스
Runtime/Components/EAUploaderMeta.csEAUploader.Components.EAUploaderMetaEAUploader가 프리팹을 관리하기 위한 정보
Runtime/Components/EAUploaderOutfit.csEAUploader.Components.EAUploaderOutfit옷 갈아입히기(대응 의상)로 입힌 의상의 정보

AvatarTagComponent


EAUploader가 아바타에 붙이는 컴포넌트의 추상 기본 클래스입니다. Modular Avatar의 AvatarTagComponent를 바탕으로 합니다(MIT License).

  • VRChat SDK - Avatars가 설치된 경우(VRC_SDK3A가 정의된 경우) VRC.SDKBase.IEditorOnly를 구현합니다. 이로써 컴포넌트는 VRChat SDK의 허용 목록 검사 대상에서 제외되며, 업로드용 빌드에서는 아바타에서 제거됩니다.
  • [ExecuteAlways], [DefaultExecutionOrder(-9990)]이 붙어 있습니다.

EAUploaderMeta


EAUploader가 관리용 Prefab Variant의 루트에 붙이는 컴포넌트입니다. [DisallowMultipleComponent]이므로 하나의 프리팹에 하나만 붙습니다.

namespace EAUploader.Components
{
[DisallowMultipleComponent]
public class EAUploaderMeta : AvatarTagComponent
{
public enum PrefabStatus { Show , Hidden, Pinned }
public enum PrefabType { VRChat, VRM, Other }
public enum PrefabGenre { Avatar, Cloth, Accessory, Other }
public PrefabStatus status;
public PrefabType type;
public PrefabGenre genre;
public long lastModifiedTicks;
public bool genreConfirmed;
[TextArea(3, 10)]
public string memo;
public List<string> tags = new List<string>();
}
}
필드내용
status목록 표시 상태. Show(표시), Hidden(숨김), Pinned(고정)
type프리팹 종류. 컴포넌트로 판정합니다(VRC_AvatarDescriptor → VRChat, VRMMeta → VRM, 그 외 → Other)
genre사용자용 분류. Avatar, Cloth, Accessory, Other
lastModifiedTicksEAUploader가 가져오기·업데이트한 시각(UTC Ticks). 0이면 파일 타임스탬프를 사용
genreConfirmed가져올 때 장르가 확정되었는지
memo메모
tags아이템에 붙인 태그

EAUploaderMeta는 관리용 Prefab(Assets/EAUploader/Prefabs/ 아래)의 루트에만 붙으며, 루트의 것만 읽힙니다.

EAUploaderOutfit


옷 갈아입히기(대응 의상)로 아바타에 입힌 의상의 루트에 붙는 컴포넌트입니다.

namespace EAUploader.Components
{
[DisallowMultipleComponent]
public class EAUploaderOutfit : AvatarTagComponent
{
public enum SetupMode { ModularAvatar, BoneMerge, AttachToBone }
public string sourcePrefabGuid;
public SetupMode mode;
}
}
필드내용
sourcePrefabGuid입힌 의상(관리용 Prefab)의 GUID
mode의상 설정 방법. ModularAvatar(Modular Avatar로 본 통합), BoneMerge(업로드 시 EAUploader가 본 통합), AttachToBone(본에 부착)

BoneMerge 의상은 VRChat SDK의 빌드 전처리(OutfitBuildHook, IVRCSDKPreprocessAvatarCallback, order −12000, NDMF보다 앞)에서 업로드되는 복사본 안에서만 아바타의 본에 통합됩니다.

다른 도구와의 공존


AAO: Avatar Optimizer

AvatarOptimizer는 아바타의 컴포넌트가 어떤 속성을 참조·변경하는지에 대한 정보를 바탕으로 최적화합니다. EAUploader는 Editor/Scripts/Coexistence/에서 AvatarOptimizer의 API(ComponentInformation)를 사용해 EAUploaderMeta와 EAUploaderOutfit의 정보를 등록합니다. 이 코드는 HAS_AAO가 정의된 경우에만 활성화됩니다.

런타임 컴포넌트를 추가·변경할 때는 AvatarOptimizer 같은 비파괴 도구와의 공존도 확인하세요.