运行时
对开发感兴趣吗?
Project EAUploader一直在招募开发成员! 只是想聊聊也非常欢迎! 请访问本项目的Discord服务器。 点击这里加入
本页介绍Runtime文件夹中的EAUploader程序集。
本文档基于EAUploader v1.6.2编写。
概要
EAUploader程序集中包含添加到Avatar(预制体)上的组件。
组件会被保存到场景和预制体中,因此与仅限编辑器的EAUploader.Editor程序集分开,定义在面向所有平台的程序集中。
| 文件 | 类 | 内容 |
|---|---|---|
Runtime/Components/AvatarTagComponent.cs | EAUploader.Components.AvatarTagComponent | 添加到Avatar上的组件的基类 |
Runtime/Components/EAUploaderMeta.cs | EAUploader.Components.EAUploaderMeta | EAUploader用于管理预制体的信息 |
Runtime/Components/EAUploaderOutfit.cs | EAUploader.Components.EAUploaderOutfit | 通过”Dress Up (Compatible Outfits)“穿戴的服装的信息 |
AvatarTagComponent
EAUploader添加到Avatar上的组件的抽象基类。基于Modular Avatar的AvatarTagComponent(MIT License)。
- 安装了VRChat SDK - Avatars时(定义了
VRC_SDK3A时),会实现VRC.SDKBase.IEditorOnly。这样该组件就不会成为VRChat SDK白名单检查的对象,并会在上传构建时从Avatar上移除。 - 带有
[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 |
lastModifiedTicks | EAUploader导入或更新物品的时间(UTC的Ticks)。为0时使用文件的时间戳 |
genreConfirmed | 导入时是否已确定类型 |
memo | 备注 |
tags | 物品上添加的标签 |
EAUploaderMeta只添加在管理用Prefab(Assets/EAUploader/Prefabs/下)的根节点上,并且只读取根节点上的组件。
EAUploaderOutfit
通过”Dress Up (Compatible Outfits)“为Avatar穿戴的服装根节点上添加的组件。
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,顺序−12000,在NDMF之前)合并到Avatar的骨骼上。
与其他工具的共存
AAO: Avatar Optimizer
AvatarOptimizer根据各组件引用或修改了哪些属性的信息来优化Avatar。
EAUploader在Editor/Scripts/Coexistence/中,使用AvatarOptimizer的API(ComponentInformation)注册了EAUploaderMeta和EAUploaderOutfit的信息。该代码仅在定义了HAS_AAO时启用。
添加或更改运行时组件时,也请确认与AvatarOptimizer等非破坏性工具的共存。