環境 (Environment)
Unity: 6000.5.2f1
UniVRM: v0.131.1
概要 (Summary)
Unity 6000.5.x系へアップデートしたところ、破壊的変更により複数のコンパイルエラーおよび実行時インポートエラーが発生しました。
手元で該当箇所を修正し、正常に動作することを確認しましたので、今後のアップデートの参考として共有いたします。
-
UPMのサンプルフォルダ検証による無限ループ
症状: com.vrmc.gltf や com.vrmc.vrm などのパッケージにおいて、package.json 内に samples の記述が存在しますが、実体の Samples~ フォルダがないため、パッケージマネージャーがエラーを出力し続け無限ループに陥ります。
対応: package.json から "samples": [...] のブロックを削除することで回避しました。
-
TreeView 関連の obsolete エラー (CS0619)
症状: Unity 6000.5.x から TreeView 等でジェネリック型指定が必須になりました。
対応: 以下のように <int> を指定するように修正しました。
対象ファイル: MuscleInspectorEditor.cs, SpringBoneTreeView.cs
TreeView -> TreeView<int>
TreeViewItem -> TreeViewItem<int>
TreeViewState -> TreeViewState<int>
-
GetInstanceID() の obsolete エラーと EntityId の型エラー
症状: GetInstanceID() が非推奨となり GetEntityId() への移行が促されますが、戻り値の EntityId が int や ulong に暗黙のキャストができなくなりました。
対応:
MorphTargetIdentifier.cs: IDでの保持をやめ、TargetRenderer(SkinnedMeshRenderer)自体の参照をそのまま比較・保持するように修正。
VRM10SpringBoneCollider.cs: SelectedGuid の型を ulong から UnityEngine.EntityId に変更。
SpringBoneTreeView.cs: 描画用のControl ID(int)が必要な箇所では、joint.GetEntityId().GetHashCode() でハッシュ値を取得して使用。
SelectedGUIBase.cs (SelectedColliderGroupGUI): element.objectReferenceValue.GetEntityId() を取得し比較するように修正。
-
AssetDatabase.ImportAsset の実行時制限
症状: VRMインポート時のテクスチャ最適化処理にて UnityException: Calls to "AssetDatabase.ImportAsset" are restricted during asset importing. が発生し、インポートが中断されます。
対応:
対象ファイル: TextureImporterConfigurator.cs (84行目付近)
importer.SaveAndReimport(); を UnityEditor.EditorApplication.delayCall で遅延実行させることで回避しました。
C#
UnityEditor.EditorApplication.delayCall += () =>
{
importer.SaveAndReimport();
};
ご対応のほど、よろしくお願いいたします。
環境 (Environment)
Unity: 6000.5.2f1
UniVRM: v0.131.1
概要 (Summary)
Unity 6000.5.x系へアップデートしたところ、破壊的変更により複数のコンパイルエラーおよび実行時インポートエラーが発生しました。
手元で該当箇所を修正し、正常に動作することを確認しましたので、今後のアップデートの参考として共有いたします。
UPMのサンプルフォルダ検証による無限ループ
症状: com.vrmc.gltf や com.vrmc.vrm などのパッケージにおいて、package.json 内に samples の記述が存在しますが、実体の Samples~ フォルダがないため、パッケージマネージャーがエラーを出力し続け無限ループに陥ります。
対応: package.json から "samples": [...] のブロックを削除することで回避しました。
TreeView 関連の obsolete エラー (CS0619)
症状: Unity 6000.5.x から TreeView 等でジェネリック型指定が必須になりました。
対応: 以下のように
<int>を指定するように修正しました。対象ファイル: MuscleInspectorEditor.cs, SpringBoneTreeView.cs
TreeView -> TreeView
<int>TreeViewItem -> TreeViewItem
<int>TreeViewState -> TreeViewState
<int>GetInstanceID() の obsolete エラーと EntityId の型エラー
症状: GetInstanceID() が非推奨となり GetEntityId() への移行が促されますが、戻り値の EntityId が int や ulong に暗黙のキャストができなくなりました。
対応:
MorphTargetIdentifier.cs: IDでの保持をやめ、TargetRenderer(SkinnedMeshRenderer)自体の参照をそのまま比較・保持するように修正。
VRM10SpringBoneCollider.cs: SelectedGuid の型を ulong から UnityEngine.EntityId に変更。
SpringBoneTreeView.cs: 描画用のControl ID(int)が必要な箇所では、joint.GetEntityId().GetHashCode() でハッシュ値を取得して使用。
SelectedGUIBase.cs (SelectedColliderGroupGUI): element.objectReferenceValue.GetEntityId() を取得し比較するように修正。
AssetDatabase.ImportAsset の実行時制限
症状: VRMインポート時のテクスチャ最適化処理にて UnityException: Calls to "AssetDatabase.ImportAsset" are restricted during asset importing. が発生し、インポートが中断されます。
対応:
対象ファイル: TextureImporterConfigurator.cs (84行目付近)
importer.SaveAndReimport(); を UnityEditor.EditorApplication.delayCall で遅延実行させることで回避しました。
C#
UnityEditor.EditorApplication.delayCall += () =>
{
importer.SaveAndReimport();
};
ご対応のほど、よろしくお願いいたします。