VRoidSDK.Decorator
→ Pixiv.VroidSdk.Decorator
VRoidSDK.IO
→ Pixiv.VroidSdk.IO
VRoidSDK.Localize
→ Pixiv.VroidSdk.Localize
VRoidSDK.Networking
→ Pixiv.VroidSdk.Networking
Pixiv.VroidSdk.Networking.Unity
VRoidSDK.OAuth
→ Pixiv.VroidSdk.Oauth
Pixiv.VroidSdk.Oauth.DataModel
Pixiv.VroidSdk.Unity.Oauth.Legacy
VRoidSDK
→ Pixiv.VroidSdk
Pixiv.VroidSdk.Api
Pixiv.VroidSdk.Api.DataModel
Pixiv.VroidSdk.Api.Legacy
Pixiv.VroidSdk.Cache
Pixiv.VroidSdk.Unity.Cache
using Pixiv.VroidSdk.Api.Legacy;
using Pixiv.VroidSdk.Api.DataModel;
private void LoadModel(CharacterModel characterModel, string password)
{
HubModelDeserializer.Instance.LoadCharacterAsync(
characterModel: characterModel,
encryptPassword: password, // モデルの暗号化に使うパスワードを設定
onLoadComplete: (GameObject characterObj) => onSuccess(characterObject),
onDownloadProgress: (float progress) => onProgress(progress),
onError: (Exception error) => onError(error)
);
// optionを使いキャッシュ数など細かい設定が可能
// ただし、パスワードは設定必須になります
var option = new HubModelDeserializerOption {
MaxCacheCount = 20,
CacheEncryptPassword = password, // モデルの暗号化に使うパスワードを設定
};
HubModelDeserializer.Instance.LoadCharacterAsync(
characterModel: characterModel,
option: option,
onLoadComplete: (GameObject characterObj) => onSuccess(characterObject),
onDownloadProgress: (float progress) => onProgress(progress),
onError: (Exception error) => onError(error)
);
}
using Pixiv.VroidSdk.Api.DataModel;
public class Model : ApplicationModel
{
// クラス宣言が参照型になったのでNull許容型で宣言することはできない
- public Account? CurrentUser { get; set; }
+ public Account CurrentUser { get; set; }
public Model()
{
CurrentUser = null;
}
}
VRoidSDK.LocalStorage
が廃止されました。
Pixiv.VroidSdk.Cache.ModelDataCache#Fetch
Pixiv.VroidSdk.Cache.ModelDataCache#FetchAsync
の利用)でマイグレーション処理が自動で実行されますVRoidSDK.LocalStorage
をVRoid SDKが意図した使い方以外に利用している場合は正常に読み込めず削除されます。GetCharacterModelsProperty
PostCharacterModelsPropertiesBatch
などで返されるレスポンスの一部 GltfMaterial#extensions
のレスポンスが従来まで Dictionary<string, object>
だったのが GltfMaterialExtensions
型に変更されましたpublic override void Init(GltfMaterial baseData)
{
if (baseData.extensions != null)
{
stringBuilder.Append("\\n");
// v0.0.xはDictionaryを返す
foreach (var x in baseData.extensions)
{
stringBuilder.AppendLine("\\t" + x.Key + ":" + x.Value);
}
}
}
public override void Init(GltfMaterial baseData)
{
if (baseData.extensions != null)
{
stringBuilder.Append("\\n");
// v0.1.0以降はGltfMaterialExtensions型を返し、KHR_materials_unlitがあるかないかが判定できる
if (baseData.extensions.KHR_materials_unlit != null)
{
stringBuilder.AppendLine("\\t KHR_materials_unlit:{}");
}
}
}
HubApi
HubModelDeserializer
などのUtilityクラスを従来通り使用するのに初期化が必要になりました
HubModelDeserializer
は HubApi
の初期化のタイミングで同時に初期化が行われるclass Hoge : MonoBehaviour
{
void Start()
{
HubApi.GetAccountCharacterModels(
count: 10,
onSuccess: (List<CharacterModel> characterModels) => {
HubModelDeserializer.Instance.LoadCharacterAsync(
characterModel: characterModels[0],
onDownloadProgress: (float progress) => {
},
onLoadComplete: (GameObject characterObj) => {
characterObj.transform.parent = this.transform;
},
onError: (Exception error) => {
}
);
},
onError: (ApiErrorFormat errorFormat) => { /* 通信エラーなどのエラーが発生した時の処理 */ }
);
}
}
class Hoge : MonoBehaviour
{
void Start()
{
// 通信Driver設定 (ない場合はデフォルトでUnityWebRequestを利用)
var driver = new HttpClientDriver(SynchronizationContext.Current);
Authentication.Instance.Init(_sdkConfiguration.AuthenticateMetaData, driver);
// HubApiの初期化
// 内部で自動的に `HubModelDesiriazer.Instance` の初期化も行われる
HubApi.Initialize(Authentication.Instance.Client, _sdkConfiguration.GetConfig());
// 認可
Authentication.Instance.AuthorizeWithExistAccount(...);
HubApi.GetAccountCharacterModels(
count: 10,
onSuccess: (List<CharacterModel> characterModels) => {
HubModelDeserializer.Instance.LoadCharacterAsync(
characterModel: characterModels[0],
onDownloadProgress: (float progress) => {
},
onLoadComplete: (GameObject characterObj) => {
characterObj.transform.parent = this.transform;
},
onError: (Exception error) => {
}
);
},
onError: (ApiErrorFormat errorFormat) => { /* 通信エラーなどのエラーが発生した時の処理 */ }
);
}
}
以下のクラスがDeprecatedになります。それぞれ代替手段があるのでそちらへの移行を検討してください
VRoidSDK.Authentication
→ Pixiv.VroidSdk.OauthProvider
Pixiv.VroidSdk.Oauth.Client
BrowserAuthorizer
→ Pixiv.VroidSdk.BrowserProvider
Pixiv.VroidSdk.Browser.*
VRoidSDK.SDKConfiguration
→ Pixiv.VroidSdk.Oauth.DataModel
Pixiv.VroidSdk.Environments.*
VRoidSDK.HubApi
→ Pixiv.VroidSdk.Api.DefaultApi
Pixiv.VroidSdk.Api.HeartApi
VRoidSDK.HubModelDeserializer
→ Pixiv.VroidSdk.ModelLoader
従来のSDKではSDKConfigurationにアプリケーションIDやシークレットを入力して設定してもらってましたが、0.1.0以降では非推奨となります。
代わりにアプリケーション管理画面から credential.json.bytes
をダウンロードしていただきそれを利用してください。
Pixiv.VroidSdk.OauthProvider
Pixiv.VroidSdk.Oauth.Client
Pixiv.VroidSdk.Api.DefaultApi
Pixiv.VroidSdk.Api.HeartApi
Pixiv.VroidSdk.ModelLoader
Task<T>
を返すメソッドも追加されました。
await
実行後はスレッドコンテキストが変わるため、UnityのAPIを利用する場合は SynchronizationContext.Current
を使ってスレッドコンテキストを指定して実行してください。UnityWebRequest
か HttpClient
経由で行えるように変えることができますPixiv.VroidSdk.Unity.Networking.Drivers.UnityWebRequestDriver
Pixiv.VroidSdk.Networking.Drivers.HttpClientDriver
をご利用くださいAuthentication
を使った認可フローではサポートしていないためこの機能を利用する際は「3.1 認可・API実行・モデル読み込みのインターフェースを実装」をもとに新しい実装でお試しくださいASWebAuthenticationSession
にURLスキームを渡す処理でエラーになるバグを修正しました