跳转到内容

运行时

对开发感兴趣吗?

Project EAUploader一直在招募开发成员! 只是想聊聊也非常欢迎! 请访问本项目的Discord服务器。 点击这里加入



本页介绍Runtime文件夹中的EAUploader程序集。

本文档基于EAUploader v1.6.2编写。

概要


EAUploader程序集中包含添加到Avatar(预制体)上的组件。 组件会被保存到场景和预制体中,因此与仅限编辑器的EAUploader.Editor程序集分开,定义在面向所有平台的程序集中。

文件类内容
Runtime/Components/AvatarTagComponent.csEAUploader.Components.AvatarTagComponent添加到Avatar上的组件的基类
Runtime/Components/EAUploaderMeta.csEAUploader.Components.EAUploaderMetaEAUploader用于管理预制体的信息
Runtime/Components/EAUploaderOutfit.csEAUploader.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
lastModifiedTicksEAUploader导入或更新物品的时间(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等非破坏性工具的共存。