※こちらは Spine-Unity 4.2 to 4.3 Upgrade Guide の日本語版です。
スケルトンの再エクスポートとspine-unity ランタイムファイルのアップグレードについて
これらについてはドキュメントの以下のセクションを参照してください:
spine-unity ランタイムドキュメント: spine-unity ランタイムのアップデート
spine-unity ランタイムドキュメント: 拡張UPMパッケージのアップデート
上記のセクションで、スケルトンの再エクスポート、複数の spine-unity バージョン間でのアップグレード、spine-unity ランタイムファイルを安全にアップグレードする方法など、必要な手順が説明されています。
⚠️ 4.3における主な変更点の概要
spine-unity 4.3では、以下の順序で対応が必要な、2つの大きな破壊的変更が導入されています:
1. spine-csharp APIの変更:基盤となるC#ランタイムに新しいポーズシステムが導入されました。これは、ボーン、スロット、コンストレイントのプロパティへのアクセス方法に影響します。コンポーネントの変更に取り組む前に、既存のコードを新しいAPIを使用するように更新する必要があります。
2. spine-unity コンポーネント分割(上記 API 変更の後に対応してください): 主要なスケルトンコンポーネントが、レンダリング用とアニメーション用に分離されました。シーン/プレハブを開くとコンポーネントは自動更新されますが、スクリプト内のコンポーネント参照が失われる可能性があり、移行作業が必要となります。
重要: 後述の手順に従い、まず spine-csharp API 変更に対応したコード更新を行い、その後でコンポーネント分割の移行作業を行ってください。この順序により、コンポーネント参照の問題に対処する前にコードが正しくコンパイルされることが保証されます。
┌─────────────────────────────────────────────────────┐
│1. spine-csharp 4.3 API変更へのコード適応
└─────────────────────────────────────────────────────┘
より見やすい形式で API 変更点の完全なリストをご覧になりたい場合は、変更履歴の C#
および Unity
セクションを参照してください。
Unityに影響する主なC# API変更点には、以下の破壊的変更を含む新しいポーズシステムが含まれます。コンパイルエラーが発生した場合は、以下のリストを検索することで、古いコードを新しい移動されたプロパティに置き換える方法を確認できるはずです:
1. カラープロパティ .R
.G
.B
.A
は .GetColor()
および .SetColor()
に置き換えられました:
2. Bone
のローカルトランスフォームプロパティは Bone.Pose
に移動されました:
-
Bone.X
→ Bone.Pose.X
-
Bone.Y
→ Bone.Pose.Y
-
Bone.Rotation
→ Bone.Pose.Rotation
-
Bone.ScaleX
→ Bone.Pose.ScaleX
-
Bone.ScaleY
→ Bone.Pose.ScaleY
-
Bone.ShearX
→ Bone.Pose.ShearX
-
Bone.ShearY
→ Bone.Pose.ShearY
3. Bone
のワールドトランスフォームおよび適用済みトランスフォームプロパティは Bone.AppliedPose
に移動されました:
-
Bone.AX
→ Bone.AppliedPose.X
-
Bone.AY
→ Bone.AppliedPose.Y
-
Bone.ARotation
→ Bone.AppliedPose.Rotation
-
Bone.AScaleX
→ Bone.AppliedPose.ScaleX
-
Bone.AScaleY
→ Bone.AppliedPose.ScaleY
-
Bone.AShearX
→ Bone.AppliedPose.ShearX
-
Bone.AShearY
→ Bone.AppliedPose.ShearY
-
Bone.WorldX
→ Bone.AppliedPose.WorldX
-
Bone.WorldY
→ Bone.AppliedPose.WorldY
-
Bone.WorldRotationX
→ Bone.AppliedPose.WorldRotationX
-
Bone.WorldRotationY
→ Bone.AppliedPose.WorldRotationY
4. Slot
プロパティは SlotPose
、すなわち Slot.AppliedPose
へ移動しました:
-
Slot.Attachment
→ Slot.AppliedPose.Attachment
-
Slot.R, .G, .B, .A
→ Slot.AppliedPose.GetColor()
and SetColor()
-
Slot.R2, .G2, .B2
→ Slot.AppliedPose.GetDarkColor()
and SetDarkColor()
-
Slot.HasSecondColor
→ Slot.AppliedPose.HasSecondColor
-
Slot.Deform
→ Slot.AppliedPose.Deform
-
Slot.SequenceIndex
→ Slot.AppliedPose.SequenceIndex
5. Constraint
プロパティは Constraint.Pose
へ移動しました:
IkConstraint:
-
IkConstraint.Mix
→ IkConstraint.Pose.Mix
-
IkConstraint.Softness
→ IkConstraint.Pose.Softness
-
IkConstraint.BendDirection
→ IkConstraint.Pose.BendDirection
-
IkConstraint.Compress
→ IkConstraint.Pose.Compress
-
IkConstraint.Stretch
→ IkConstraint.Pose.Stretch
TransformConstraint:
-
TransformConstraint.MixRotate
→ TransformConstraint.Pose.MixRotate
-
TransformConstraint.MixX
→ TransformConstraint.Pose.MixX
-
TransformConstraint.MixY
→ TransformConstraint.Pose.MixY
-
TransformConstraint.MixScaleX
→ TransformConstraint.Pose.MixScaleX
-
TransformConstraint.MixScaleY
→ TransformConstraint.Pose.MixScaleY
-
TransformConstraint.MixShearY
→ TransformConstraint.Pose.MixShearY
PathConstraint:
-
PathConstraint.Position
→ PathConstraint.Pose.Position
-
PathConstraint.Spacing
→ PathConstraint.Pose.Spacing
-
PathConstraint.MixRotate
→ PathConstraint.Pose.MixRotate
-
PathConstraint.MixX
→ PathConstraint.Pose.MixX
-
PathConstraint.MixY
→ PathConstraint.Pose.MixY
PhysicsConstraint:
-
PhysicsConstraint.Mix
→ PhysicsConstraint.Pose.Mix
-
PhysicsConstraint.Gravity
→ PhysicsConstraint.Pose.Gravity
-
PhysicsConstraint.Strength
→ PhysicsConstraint.Pose.Strength
-
PhysicsConstraint.Damping
→ PhysicsConstraint.Pose.Damping
-
PhysicsConstraint.MassInverse
→ PhysicsConstraint.Pose.MassInverse
-
PhysicsConstraint.Wind
→ PhysicsConstraint.Pose.Wind
6. ConstraintData
プロパティは ConstraintData.GetSetupPose()
へ移動しました:
-
IkConstraintData.Mix
→ IkConstraintData.GetSetupPose().Mix
-
同様の変更が、その他のすべてのコンストレイントデータのプロパティおよびタイプ(TransformConstraintData、PathConstraintData、PhysicsConstraintData)にも適用されます。
-
ConstraintData.XX
→ ConstraintData.GetSetupPose().XX
7. SkeletonData
は、コンストレイントタイプごとに個別のリストではなく、単一の IConstraintData
リスト SkeletonData.Constraints
を提供するようになりました:
-
SkeletonData.IkConstraints
→ SkeletonData.Constraints.OfType<IkConstraintData>()
-
SkeletonData.TransformConstraints
→ SkeletonData.Constraints.OfType<TransformConstraintData>()
-
SkeletonData.PathConstraints
→ SkeletonData.Constraints.OfType<PathConstraintData>()
-
SkeletonData.PhysicsConstraints
→ SkeletonData.Constraints.OfType<PhysicsConstraintData>()
8. SkeletonData
では、コンストレイントタイプごとの単一の検索メソッドの代わりに、SkeletonData.FindConstraint<ConstraintData>()
が提供されるようになりました:
-
SkeletonData.FindIkConstraint(name)
→ SkeletonData.FindConstraint<IkConstraintData>(name)
-
SkeletonData.FindTransformConstraint(name)
→ SkeletonData.FindConstraint<TransformConstraintData>(name)
-
SkeletonData.FindPathConstraint(name)
→ SkeletonData.FindConstraint<PathConstraintData>(name)
-
SkeletonData.FindPhysicsConstraint(name)
→ SkeletonData.FindConstraint<PhysicsConstraintData>(name)
9. SetupPoseメソッドの名称を変更しました:
-
Skeleton.SetToSetupPose()
→ Skeleton.SetupPose()
-
Skeleton.SetBonesToSetupPose()
→ Skeleton.SetupPoseBones()
-
Skeleton.SetSlotsToSetupPose()
→ Skeleton.SetupPoseSlots()
-
Bone.SetToSetupPose()
→ Bone.SetupPose()
-
Slot.SetToSetupPose()
→ Slot.SetupPose()
-
IkConstraint.SetToSetupPose()
→ IkConstraint.SetupPose()
10. Skeleton.Physics
は Spine
名前空間内の Physics
へ直接移動されました:
-
Unity 環境では UnityEngine.Physics
と競合する可能性があります
-
Spine Physics: UpdateWorldTransform(Skeleton.Physics.Update)
→ UpdateWorldTransform(Spine.Physics.Update)
-
UnityEngine Physics: Physics.gravity
→ UnityEngine.Physics.gravity
11. その他の破壊的変更:
-
Bone
は Bone.Skeleton
プロパティを提供しなくなりました。コンストラクタは skeleton
パラメータを受け取りません
-
Timeline Apply()
メソッドは追加の appliedPose
パラメータを受け取るようになりました
-
アタッチメントの ComputeWorldVertices()
メソッドは、追加の skeleton
パラメータを受け取るようになりました
-
タイムラインコンストレイントインデックスメソッドを、統一された ConstraintIndex
プロパティを使用するように名称変更しました
12. Unity固有の破壊的変更:
┌───────────────────────────────────────────────┐
│ 2. spine-unity コンポーネントアーキテクチャ分割への対応
└───────────────────────────────────────────────┘
上記の spine-csharp API 変更に対応したコード更新後、コンポーネント分割の変更に対処する必要があります:
メインのスケルトンコンポーネントは、レンダリングとアニメーションで別々のコンポーネントに分離されました。この変更により、新しい柔軟な組み合わせ(例:アニメーションに SkeletonMecanim、レンダリングに SkeletonGraphic を使用するなど)が可能になりますが、既存プロジェクトでは移行作業が必要となります。
コンポーネントは自動的にアップグレードされ、Unityエディターでシーン/プレハブを開いた際に適用されます:
-
SkeletonAnimation
→ SkeletonAnimation
+ SkeletonRenderer
コンポーネント
-
SkeletonMecanim
→ SkeletonMecanim
+ SkeletonRenderer
コンポーネント
-
SkeletonGraphic
→ SkeletonAnimation
+ SkeletonGraphic
コンポーネント
ただし、カスタムスクリプト内の既存の参照が失われる可能性があります。 これは、コンポーネントの型が一致しなくなる場合があるためです(例:SkeletonAnimation が SkeletonRenderer のサブクラスではなくなります)。
📖 詳しくは、以下の詳細な移行ガイドをご確認ください:
spine-unity 4.3 分離コンポーネントへのアップグレードガイド
このガイドには:
- 移行の具体的なステップ
- スクリプト更新のためのコード例
- コンポーネント参照喪失を防ぐ解決策
- (任意)4.2からの2ステップ移行のやり方
の解説が含まれています。
デフォルト値の変更
-
デフォルトのテクスチャワークフロー変更: PMAからストレートアルファテクスチャへ変更し、リニア色空間(Unityのデフォルト)との互換性を向上させました。PMA Vertex Color
はこれとは独立しており、シングルパス加算レンダリングには引き続き有効にする必要があります。
-
Spine Preferencesに、Switch Texture Workflow
機能を追加しました。これにより、PMAテクスチャとストレートアルファテクスチャ、およびそれぞれのマテリアルプリセットを素早く切り替えることが可能となります。
再構築された部分 (破壊的ではありません)
公式サポート対象 Unity バージョン: 2017.1-6000.1
新しいUnitypackageはダウンロードページから入手できます: spine-unity Download
当ガイドへ追加・修正すべき事項がございましたら、お気軽に下記へご投稿ください。アップグレードをできるだけスムーズに進められるよう、皆様のご意見を参考にさせていただきます。
今回のアップデートには大きな移行作業を伴いますが、アニメーションとレンダリングコンポーネントを独立して組み合わせられる柔軟性の向上と、新たなスレッド処理機能(並行実行機能)によって十分に報われるものと考えています。詳細は変更履歴をご確認ください。
改良されたアーキテクチャとパフォーマンス機能を備えた新しいSpine 4.3-betaを気に入っていただけたら幸いです!🙂