プレハブの操作、情報の取得に関わる公開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で定義されています(1クラス1ファイル)。
using EAUploader.Editor.Prefab.API;
| Class | Description |
|---|
| PrefabAPI | プレハブの操作、情報の取得を提供するクラス |
| PrefabPreviewAPI | プレハブのプレビュー画像を提供するクラス |
| ShaderAPI | シェーダーの確認を提供するクラス |
| PrefabUtilityAPI | アバターの情報の取得を提供するクラス |
| VRMAPI | VRMのインポートを提供するクラス(VRM Converter for VRChat導入時のみ) |
PrefabAPI
| Method | Type | Description |
|---|
| UpdatePrefabInfo | Void | 管理用Prefabを初期化し直します(管理フォルダ、移行、不足しているプレビュー画像) |
| ImportPrefab | Void | 指定したパスのプレハブをEAUploaderに取り込みます(管理用Prefab Variantを作成又は更新) |
| GetPrefab | GameObject | 指定したパスのプレハブを取得します |
| ShowDeletePrefabDialog | Bool | プレハブの削除確認を表示します |
| DeletePrefabPreview | Void | 指定したパスのプレハブのプレビュー画像を削除します |
| PinPrefab | Void | 指定したパスのプレハブのピン留めを切り替えます |
| GetAvatarDescriptor | VRCAvatarDescriptor | 指定したパスのプレハブのVRCAvatarDescriptorを取得します |
| IsPinned | Bool | 指定したパスのプレハブがピン留めされているか確認します |
| SavePrefab | Void | プレハブを保存します |
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/<アイテム名>/)を作成し、管理用Prefabの場合は情報を更新します。元のプレハブは変更しません。Assets/の外、Assets/EAUploader/の中のプレハブ、既にVariantがあるプレハブからは作成しません。
ShowDeletePrefabDialog(path, completed)は、EAUploaderのウィンドウ内に削除確認のモーダルを開き、モーダルを開けた場合にtrueを返します。削除が完了するとcompleted(true)、キャンセルするとcompleted(false)が呼ばれます。プレハブと一緒に、元のプレハブやそのアイテムでしか使われていないマテリアル・テクスチャも削除されます。
- 引数が1つの
ShowDeletePrefabDialog(path)は[Obsolete]です。互換性のために、Unityの標準の確認ダイアログを表示し、削除が完了した場合にtrueを返します。
PinPrefabは、ピン留めされていない場合はピン留めし、ピン留めされている場合は解除します。
SavePrefabは、GameObjectを指定したパスにプレハブとして保存し、ImportPrefabを実行します。
PrefabPreviewAPI
| Method | Type | Description |
|---|
| GeneratePreview | Texture2D | プレハブのプレビュー画像を生成します |
| GenerateAndSaveAllPrefabPreviews | Void | プレビュー画像が無いすべてのプレハブのプレビュー画像を生成して保存します |
| SavePrefabPreview | Void | プレハブのプレビュー画像を保存します |
| LoadTextureFromFile | Texture2D | ファイルからテクスチャを読み込みます |
| SaveTextureToFile | Void | テクスチャをPNGファイルに保存します |
| GetPreviewImagePath | String | プレハブのプレビュー画像のパスを取得します |
| GetPrefabPreview | Texture2D | プレハブのプレビュー画像を取得します |
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
| Method | Type | Description |
|---|
| CheckShaders | Void | Assets内のすべてのプレハブのシェーダーを確認します |
| GetExistingShaders | List | プロジェクトに導入されているシェーダーのグループ名の一覧を取得します |
| CheckShadersInPrefabs | Void | 指定したプレハブのシェーダーを確認します |
| CheckAvatarHasShader | Bool | アバターに必要なシェーダーがすべて存在するか確認します |
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
| Method | Type | Description |
|---|
| GetAvatarHeight | Float | アバターの高さ(視点の高さ)を取得します |
| CheckAvatarHasVRCAvatarDescriptor | Bool | アバターがVRCAvatarDescriptorを持っているか確認します |
| CheckAvatarIsVRM | Bool | アバターがVRMか確認します |
| CheckAvatarHasTandO | Bool | アバターがAvatarOptimizerのTraceAndOptimizeを持っているか確認します |
| GetAvatarDescriptor | VRCAvatarDescriptor | アバターのVRCAvatarDescriptorを取得します |
| GetPipelineManager | PipelineManager | アバターの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を返します。
CheckAvatarHasVRCAvatarDescriptorは、avatarがnullの場合falseを返します。
CheckAvatarIsVRMは、VRM Converter for VRChatが導入されていない場合は常にfalseを返します。
CheckAvatarHasTandOは、AvatarOptimizerが導入されていない場合は常にfalseを返します。
VRMAPI
VRM Converter for VRChatが導入されている場合(HAS_VRMが定義されている場合)のみ使用できます。
| Method | Type | Description |
|---|
| ImportVRM | Void | VRMファイルをインポートし、変換ウィンドウを表示します |
public static void ImportVRM(string path = null);
pathを省略した場合は、ファイル選択ダイアログを表示します。
- プロジェクトの
Assets内にあるファイルは指定できません。
- インポートしたVRMは
Assets/VRM/{ファイル名}.prefabに保存されます。