0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VRC公式api アバターアップロード編

Posted at

?

  • 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    // アップロード中
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?