跳转到内容

EAUploader.Editor.Prefab.API

与预制体的操作和信息获取相关的公开API。 定义在Editor/Public EAUploader API/中的EAUploader.Editor.Prefab.API.cs、EAUploader.Editor.PrefabPreview.API.cs、EAUploader.Editor.Shader.API.cs、EAUploader.Editor.PrefabUtility.API.cs、EAUploader.Editor.VRM.API.cs中(每个文件一个类)。

using EAUploader.Editor.Prefab.API;
类说明
PrefabAPI提供预制体的操作和信息
PrefabPreviewAPI提供预制体的预览图
ShaderAPI提供着色器检查
PrefabUtilityAPI提供Avatar的信息
VRMAPI提供VRM导入(仅在安装了VRM Converter for VRChat时)

PrefabAPI


方法类型说明
UpdatePrefabInfoVoid重新初始化管理用预制体(管理用文件夹、迁移、缺少的预览图)
ImportPrefabVoid将指定路径的预制体纳入EAUploader(创建或更新管理用Prefab Variant)
GetPrefabGameObject获取指定路径的预制体
ShowDeletePrefabDialogBool显示预制体的删除确认
DeletePrefabPreviewVoid删除指定路径预制体的预览图
PinPrefabVoid切换指定路径预制体的置顶状态
GetAvatarDescriptorVRCAvatarDescriptor获取指定路径预制体的VRCAvatarDescriptor
IsPinnedBool检查指定路径的预制体是否已置顶
SavePrefabVoid保存预制体
public static void UpdatePrefabInfo();
public static void ImportPrefab(string prefabPath);
public static GameObject GetPrefab(string prefabPath);
public static bool ShowDeletePrefabDialog(string prefabPath, Action<bool> completed);
[Obsolete] public static bool ShowDeletePrefabDialog(string prefabPath);
public static void DeletePrefabPreview(string prefabPath);
public static void PinPrefab(string prefabPath);
public static VRCAvatarDescriptor GetAvatarDescriptor(string prefabPath);
public static bool IsPinned(string prefabPath);
public static void SavePrefab(GameObject prefab, string path);
  • 找不到预制体时,GetPrefab和GetAvatarDescriptor返回null。
  • 对于未管理的预制体,ImportPrefab会创建管理用Prefab Variant(Assets/EAUploader/Prefabs/<物品名称>/);对于已管理的预制体,则更新其信息。原始预制体不会被更改。对于Assets/外、Assets/EAUploader/内或已存在Variant的预制体,不会创建Variant。
  • ShowDeletePrefabDialog(path, completed)会在EAUploader窗口内打开删除确认模态窗口,打开成功时返回true。删除完成时调用completed(true),取消时调用completed(false)。除预制体外,原始预制体以及仅被该物品使用的材质和纹理也会被一并删除。
  • 单参数的ShowDeletePrefabDialog(path)为[Obsolete]。为了兼容,它会显示Unity标准的确认对话框,删除完成时返回true。
  • 预制体未置顶时,PinPrefab会将其置顶;已置顶时则取消置顶。
  • SavePrefab会将GameObject作为预制体保存到指定路径,并执行ImportPrefab。

PrefabPreviewAPI


方法类型说明
GeneratePreviewTexture2D生成预制体的预览图
GenerateAndSaveAllPrefabPreviewsVoid为所有没有预览图的预制体生成并保存预览图
SavePrefabPreviewVoid保存预制体的预览图
LoadTextureFromFileTexture2D从文件加载纹理
SaveTextureToFileVoid将纹理保存为PNG文件
GetPreviewImagePathString获取预制体预览图的路径
GetPrefabPreviewTexture2D获取预制体的预览图
public static Texture2D GeneratePreview(GameObject prefab);
public static void GenerateAndSaveAllPrefabPreviews();
public static void SavePrefabPreview(string prefabPath, Texture2D preview);
public static Texture2D LoadTextureFromFile(string filePath);
public static void SaveTextureToFile(Texture2D texture, string filePath);
public static string GetPreviewImagePath(string prefabPath);
public static Texture2D GetPrefabPreview(string prefabPath);
  • 预览图保存在Assets/EAUploader/PrefabPreviews/{Prefab的GUID}.png中。改名后预览图也会保留。
  • GeneratePreview生成1200×900的图片。
  • 不存在预览图时,GetPrefabPreview返回null。

ShaderAPI


方法类型说明
CheckShadersVoid检查Assets中所有预制体的着色器
GetExistingShadersList获取项目中已安装着色器的分组名称列表
CheckShadersInPrefabsVoid检查指定预制体的着色器
CheckAvatarHasShaderBool检查Avatar所需的着色器是否全部存在
public static void CheckShaders();
public static List<string> GetExistingShaders();
public static void CheckShadersInPrefabs(string prefabPath);
public static bool CheckAvatarHasShader(GameObject avatar);
  • 存在缺少着色器的预制体时,CheckShaders和CheckShadersInPrefabs会显示对话框。
  • 没有缺少的着色器时,CheckAvatarHasShader返回true。不会显示对话框。

PrefabUtilityAPI


方法类型说明
GetAvatarHeightFloat获取Avatar的高度(视点高度)
CheckAvatarHasVRCAvatarDescriptorBool检查Avatar是否拥有VRCAvatarDescriptor
CheckAvatarIsVRMBool检查Avatar是否为VRM
CheckAvatarHasTandOBool检查Avatar是否拥有AvatarOptimizer的TraceAndOptimize
GetAvatarDescriptorVRCAvatarDescriptor获取Avatar的VRCAvatarDescriptor
GetPipelineManagerPipelineManager获取Avatar的PipelineManager
public static float GetAvatarHeight(GameObject avatar);
public static bool CheckAvatarHasVRCAvatarDescriptor(GameObject avatar);
public static bool CheckAvatarIsVRM(GameObject avatar);
public static bool CheckAvatarHasTandO(GameObject avatar);
public static VRCAvatarDescriptor GetAvatarDescriptor(GameObject avatar);
public static VRC.Core.PipelineManager GetPipelineManager(GameObject avatar);
  • GetAvatarHeight返回VRCAvatarDescriptor的ViewPosition的Y坐标。没有VRCAvatarDescriptor时返回0。
  • avatar为null时,CheckAvatarHasVRCAvatarDescriptor返回false。
  • 未安装VRM Converter for VRChat时,CheckAvatarIsVRM始终返回false。
  • 未安装AvatarOptimizer时,CheckAvatarHasTandO始终返回false。

VRMAPI


仅在安装了VRM Converter for VRChat时(定义了HAS_VRM时)可用。

方法类型说明
ImportVRMVoid导入VRM文件并显示转换窗口
public static void ImportVRM(string path = null);
  • 省略path时会显示文件选择对话框。
  • 无法指定项目Assets中的文件。
  • 导入的VRM会保存到Assets/VRM/{文件名}.prefab。