?
- VRChatには公式APIがある
- we recommend looking at the files directly mentioned above.(細かいことはソースみてね!)」とのことなのでソースをみた
- Geminiで翻訳
Packages\com.vrchat.avatars\Editor\VRCSDK\SDK3A\Public SDK API\IVRCSdkAvatarBuilderApi.cs
using System.Threading;
using System.Threading.Tasks;
using UnityEngine;
using VRC.SDKBase.Editor;
using VRC.SDKBase.Editor.Api;
namespace VRC.SDK3A.Editor
{
/// <summary>
/// これは、Avatars SDK Builderと相互作用するために使用できる公開インターフェースです。
/// </summary>
public interface IVRCSdkAvatarBuilderApi : IVRCSdkBuilderApi
{
/// <summary>
/// 指定されたアバターGameObjectをビルドし、ビルドされたアバターバンドルへのパスを返します。
/// アバターには、有効なAvatarDescriptorコンポーネントとPipelineManagerコンポーネントがアタッチされている必要があります。
/// </summary>
/// <param name="target">ビルドするアバターGameObject</param>
/// <returns>バンドルへのパス</returns>
/// <exception cref="BuilderException">ビルドプロセスでエラーが発生しました。</exception>
/// <exception cref="BuildBlockedException">ビルドはSDKコールバックによってブロックされました。</exception>
/// <exception cref="ValidationException">コンテンツに検証エラーがあります。</exception>
Task<string> Build(GameObject target);
/// <summary>
/// 指定されたVRCAvatarに対して、指定されたアバターGameObjectをビルドしてアップロードします。
/// アバターには、有効なAvatarDescriptorコンポーネントとPipelineManagerコンポーネントがアタッチされている必要があります。
/// </summary>
/// <param name="target">ビルドするアバターGameObject</param>
/// <param name="avatar">アバター情報を持つVRCAvatarオブジェクト。アバター作成にはNameが必要です。</param>
/// <param name="thumbnailPath">ディスク上のサムネイル画像へのパス。最初のアバター作成時に指定する必要があります。</param>
/// <param name="cancellationToken">キャンセル要求を通知するトークン。</param>
/// <exception cref="BuilderException">ビルドプロセスでエラーが発生しました。</exception>
/// <exception cref="BuildBlockedException">ビルドはSDKコールバックによってブロックされました。</exception>
/// <exception cref="ValidationException">コンテンツに検証エラーがあります。</exception>
/// <exception cref="OwnershipException">現在のユーザーはターゲットコンテンツを所有していません。</exception>
/// <exception cref="UploadException">コンテンツのアップロードに失敗しました。</exception>
Task BuildAndUpload(GameObject target, VRCAvatar avatar, string thumbnailPath = null, CancellationToken cancellationToken = default);
/// <summary>
/// 指定されたアバターGameObjectをビルドし、テストアバターリストに追加します。
/// </summary>
/// <param name="target">ビルドするアバターGameObject</param>
/// <exception cref="BuilderException">ビルドプロセスでエラーが発生しました。</exception>
/// <exception cref="BuildBlockedException">ビルドはSDKコールバックによってブロックされました。</exception>
/// <exception cref="ValidationException">コンテンツに検証エラーがあります。</exception>
Task BuildAndTest(GameObject target);
}
}
Packages\com.vrchat.base\Editor\VRCSDK\Dependencies\VRChat\Public SDK API\IVRCSdkBuilderApi.cs
using System;
using System.Threading.Tasks;
namespace VRC.SDKBase.Editor
{
/// <summary>
/// これは、SDKのユーザーとして、SDK Builderと相互作用するために使用できる公開インターフェースです。
/// </summary>
public interface IVRCSdkBuilderApi : IVRCSdkControlPanelBuilder
{
// ビルドイベント
event EventHandler<object> OnSdkBuildStart; // SDKビルド開始時に発生
event EventHandler<string> OnSdkBuildProgress; // SDKビルドの進捗状況が変化したときに発生 (stringは進捗に関する情報)
event EventHandler<string> OnSdkBuildFinish; // SDKビルド終了時に発生
event EventHandler<string> OnSdkBuildSuccess; // SDKビルド成功時に発生
event EventHandler<string> OnSdkBuildError; // SDKビルド失敗時に発生
event EventHandler<SdkBuildState> OnSdkBuildStateChange; // SDKビルド状態が変化したときに発生
SdkBuildState BuildState { get; } // 現在のSDKビルド状態
// アップロードイベント
event EventHandler OnSdkUploadStart; // SDKアップロード開始時に発生
event EventHandler<(string status, float percentage)> OnSdkUploadProgress; // SDKアップロードの進捗状況が変化したときに発生 (status: 状態を表す文字列, percentage: 進捗率)
event EventHandler<string> OnSdkUploadFinish; // SDKアップロード終了時に発生
event EventHandler<string> OnSdkUploadSuccess; // SDKアップロード成功時に発生
event EventHandler<string> OnSdkUploadError; // SDKアップロード失敗時に発生
event EventHandler<SdkUploadState> OnSdkUploadStateChange; // SDKアップロード状態が変化したときに発生
SdkUploadState UploadState { get; } // 現在のSDKアップロード状態
// 短縮メソッド
// 短縮ビルドおよびアップロードメソッドについては、それぞれAvatars SDKとWorlds SDKを確認してください。
void CancelUpload(); // 現在のアップロード処理をキャンセルします。
}
/// <summary>
/// SDKビルドの状態を表す列挙型
/// </summary>
public enum SdkBuildState
{
Idle, // アイドル状態 (ビルドしていない)
Building, // ビルド中
Success, // ビルド成功
Failure // ビルド失敗
}
/// <summary>
/// SDKアップロードの状態を表す列挙型
/// </summary>
public enum SdkUploadState
{
Idle, // アイドル状態 (アップロードしていない)
Uploading, // アップロード中
Success, // アップロード成功
Failure // アップロード失敗
}
}
Packages\com.vrchat.base\Editor\VRCSDK\Dependencies\VRChat\Public SDK API\IVRCSdkPanelApi.cs
using System;
using System.Threading.Tasks;
using UnityEngine.UIElements;
namespace VRC.SDKBase.Editor
{
/// <summary>
/// これは、SDKのユーザーとして、SDKパネルと相互作用するために使用できる公開インターフェースです。
/// </summary>
public interface IVRCSdkPanelApi
{
// 残念ながら、C# 7.3ではインターフェースに静的メンバーを含めることができないため、これらは純粋な参照としてここに残されています。
// SDKパネルイベント
// event EventHandler OnSdkPanelEnable; // SDKパネルが有効になったときに発生
// event EventHandler OnSdkPanelDisable; // SDKパネルが無効になったときに発生
// event EventHandler<SdkPanelState> OnSdkPanelStateChange; // SDKパネルの状態が変化したときに発生
// SdkPanelState PanelState { get; } // 現在のSDKパネルの状態
// SDKパネルメソッド
/// <summary>
/// ビルダーパネルの下部に、閉じることができる通知を表示します。
/// </summary>
/// <param name="title">通知のタイトル</param>
/// <param name="content">通知の内容 (VisualElement)</param>
/// <param name="titleColor">タイトルの色 (例: `green`などのカラークラス)</param>
/// <param name="timeout">タイムアウト (秒)。0より大きい場合、指定された時間後に通知は自動的に閉じられます。</param>
/// <returns>Task</returns>
Task ShowBuilderNotification(string title, VisualElement content, string titleColor, int timeout = 0);
Task DismissNotification(); // 現在表示されている通知を閉じます。
// ReSharper disable once InvalidXmlDocComment
/// <summary>
/// 特定のインターフェース型 (例: IVRCSdkAvatarBuilderApi) のビルダーへの参照を取得します。
///
/// C# 7.3の時点では、インターフェースに静的メンバーを定義することはできませんが、このメソッドはクラスに存在します。
/// </summary>
/// <param name="builder">目的のビルダー。見つからない場合はnull。</param>
/// <typeparam name="T">検索するビルダーの型 (例: IVRCSdkAvatarBuilderApi)</typeparam>
/// <returns>ビルダーが見つかったかどうか</returns>
// static bool TryGetBuilder<T>(out T builder) where T : IVRCSdkBuilderApi;
}
/// <summary>
/// SDKパネルの状態を表す列挙型
/// </summary>
public enum SdkPanelState
{
Idle, // アイドル状態
Building, // ビルド中
Uploading // アップロード中
}
}