Update 4.3-split-component-upgrade-guide-ja.md

Improved the translation for better readability.
This commit is contained in:
Misaki Eymard 2025-10-15 16:02:23 +09:00 committed by GitHub
parent 20d5ee63ad
commit d6ff1bddd2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,66 +1,66 @@
# spine-unity 4.3 コンポーネント分離アップグレードガイド
# spine-unity 4.3 分離コンポーネントへのアップグレードガイド
## コンポーネントアーキテクチャの再構築
---
## 📋 本ドキュメントの対象範囲
**本ドキュメントは spine-unity コンポーネント分離の移行のみを扱います。** バージョン 4.2 から 4.3 では、spine-csharp と spine-unity の両方に追加の破壊的変更があり、コンポーネント分離を処理する前に対処する必要があります:
**本ドキュメントでは、spine-unityにおける分離コンポーネントへの移行のみを扱います。** バージョン 4.2 から 4.3 への変更では、分離コンポーネント関係以外にも、spine-csharp および spine-unity の両方で破壊的変更が加えられています。分離コンポーネントへの対応を行う前に、先に以下を処理する必要があります:
- **spine-csharp API の変更:** ボーン、スロット、コンストレイントのプロパティに影響を与える新しいポーズシステム
4.2 から 4.3 へのすべての変更を網羅する完全な移行手順については、以下を参照してください:
- [CHANGELOG.md](https://github.com/EsotericSoftware/spine-runtimes/blob/4.3-beta/CHANGELOG.md#c-2) ドキュメント(C# および Unity セクション)
- 包括的な移行ガイドとして、フォーラム投稿 ["Spine-Unity 4.2 to 4.3 Upgrade Guide"](https://esotericsoftware.com/forum) を参照してください
- [CHANGELOG.md](https://github.com/EsotericSoftware/spine-runtimes/blob/4.3-beta/CHANGELOG.md#c-2) ドキュメント(「C#」および「Unity」セクション)
- フォーラム投稿 ["Spine-Unity 4.2 to 4.3 Upgrade Guide"](https://esotericsoftware.com/forum) (こちらは包括的な移行ガイドです)
**重要:** spine-csharp API の移行を最初に完了してから、本ドキュメントで説明されているコンポーネント分離の移行に進んでください。
**重要:** spine-csharp API の移行を最初に完了してから、本ドキュメントで説明されている分離コンポーネントへの移行に進んでください。
---
## ⚠️ 重要:アップグレード前の必読事項
**この警告は、アップグレードされる既存のプロジェクトにのみ適用されます。新規プロジェクトはこのセクションを安全に無視できます。**
**この警告は、アップグレードを行う既存のプロジェクトのみに適用されます。新規プロジェクトの場合はこのセクションを安全に無視できます。**
### 何が起こるか
コンポーネントは**自動的にアップグレード**され、個別のアニメーションとレンダリングコンポーネントに分離されます:
以下のコンポーネントが**自動的にアップグレード**され、アニメーションコンポーネントとレンダリングコンポーネントに分離されます:
- `SkeletonAnimation``SkeletonAnimation` + `SkeletonRenderer` コンポーネント
- `SkeletonMecanim``SkeletonMecanim` + `SkeletonRenderer` コンポーネント
- `SkeletonGraphic``SkeletonAnimation` + `SkeletonGraphic` コンポーネント
すべてのコンポーネント設定とフィールドは自動的に転送されます - 何も失われません。
すべてのコンポーネント設定とフィールドは自動的に転送されますので、それらが失われることはありません。
**ただし:** これらの型の変更により、コンポーネントタイプが一致しなくなるため、カスタムスクリプトの既存の参照が失われる可能性があります(例`SkeletonAnimation` はもはや `SkeletonRenderer` のサブクラスではありません)。
**ただし:** 今回の型の変更により、コンポーネントタイプが一致しなくなるため、カスタムスクリプトの既存の参照が失われる可能性があります(例えば、`SkeletonAnimation` はもはや `SkeletonRenderer` のサブクラスではなくなっています)。
### 必要なアップグレード手順(順番に):
### 必要なアップグレード手順(上から順番に行ってください
1. **🔒 プロジェクトのバックアップ**
アップグレード前に完全なバックアップを作成します。これらの変更により、シーンとプレハブが変更されます。
1. **🔒 プロジェクトのバックアップを作成する**
アップグレード前に完全なバックアップを作成してください。これらの変更によって、シーンとプレハブが変更されることになります。
2. **📖 このドキュメント全体を読む**
続行する前にすべての破壊的変更を理解します
2. **📖 このドキュメント全文を読む**
続行する前にすべての破壊的変更の内容を把握してください
3. **✏️ コードのテストと更新**
- **スクリプトの更新:** このドキュメントに従って Spine コンポーネントを参照するカスタムスクリプトを修正します。メンバーが分離されたクラスに移動されると、コードがコンパイルされない可能性があります
- **テスト** いくつかのテストシーンを開いて、どのコンポーネント参照が失われるかを確認します。未保存のシーンには古いコンポーネントデータが含まれており、セーフティバックアップとして機能します - 保存すると、分離されたコンポーネントが古いコンポーネントを置き換え、参照が失われます。
**⚠️ 警告:** プレハブは動作が異なりますPrefab Edit Mode でプレハブを開くと、Unity のプレハブ自動保存機能によりコンポーネントの移行が自動的に保存されます。常に最初にシーンでテストし、プレハブではテストしないでください。
- **決定:** 失われた参照を手動で再割り当てするか、移行コードを記述して(以下で説明)自動的に処理します
3. **✏️ コードのテストと更新を行う**
- **スクリプトを更新する:** このドキュメントに従って、Spineコンポーネントを参照するカスタムスクリプトを修正してください。メンバーが分離されたクラスに移動されると、コードがコンパイルできなくなる可能性があります。
- **テストを行う** いくつかのテストシーンを開いてみて、どのコンポーネント参照が失われるかを確認してください。未保存のシーンには古いコンポーネントデータが含まれており、セーフティバックアップとして機能します。保存すると、分離されたコンポーネントが古いものを置き換え、参照が失われます。
**⚠️ 警告:** プレハブの場合は動作が異なります「Prefab Edit Mode」でプレハブを開くと、Unityのプレハブ自動保存機能により、コンポーネントの移行が自動的に保存されてしまいます。まずはシーンでテストし、プレハブでテストしないようにしてください。
- **対応を決める:** 失われた参照を手動で再割り当てするか、移行コードを記述して自動的に処理してください(詳しくは後述)。
**⚠️ 重要:** 自動コンポーネント分離は、Unity エディターでシーン/プレハブが開かれたときにのみ発生します。ゲームをビルドする前に `Upgrade All` を選択するか、各シーン/プレハブを保存する必要があります。そうしないと、古い単一コンポーネントが分離されず、ビルドで必要なコンポーネントの半分が欠落する可能性があります!
**⚠️ 重要な注意事項** 自動コンポーネント分離は、Unityエディターでシーン/プレハブが開かれたときにのみ発生します。ゲームをビルドする前に必ず、 `Upgrade All` を選択するか、各シーン/プレハブを保存してください。そうしないと、古い単一コンポーネントが分離されず、ビルドで必要なコンポーネントの半分が欠落してしまう可能性があります!
**💡 ヒント:** Console ログ出力「SendMessage cannot be called during Awake, CheckConsistency, or OnValidate」が表示される場合、これは古い未移行のアセットがシーンに存在し、自動アップグレードされたことを示しています。これらのメッセージの後に、古いコンポーネントが分離コンポーネントに自動移行されたことを確認するログメッセージが表示されます。
**💡 ヒント:** Consoleログに「SendMessage cannot be called during Awake, CheckConsistency, or OnValidate」という出力が表示された場合、これは古い未移行のアセットがシーンに存在し、自動アップグレードされたことを示しています。これらのメッセージの後に、古いコンポーネントが分離コンポーネントに自動移行されたことを確認するログメッセージが続きます。
4. **🔄 アップグレードパスを選択**
4. **🔄 アップグレード方法を選択する**
**オプション A - 手動再割り当て(小規模プロジェクトに推奨):**
**オプション A - 手動再割り当て(小規模プロジェクトの場合に推奨):**
- 各シーンとプレハブを個別に開く
- インスペクターで失われた参照を手動で再割り当て
- 満足したら保存
- インスペクターで失われた参照を手動で再割り当てする
- 問題が起きていないことを確認したら保存
**オプション B - 自動移行(多数のシーン/プレハブを持つ大規模プロジェクト**
**オプション B - 自動移行(多数のシーン/プレハブを持つ大規模プロジェクトの場合**
- 最初に移行コードを記述:
- 参照移行パターンを実装(下記の「コンポーネント参照の損失を防ぐ」セクションを参照)
- `SkeletonGraphic` 参照については、「既存の参照を SkeletonAnimation に変更」セクションを参照
- 参照移行パターンを実装(後述の「コンポーネント参照の損失を防ぐには」セクションを参照してください
- `SkeletonGraphic` 参照については、「既存の参照を SkeletonAnimation に変更」セクションを参照してください
- いくつかのファイルで移行コードをテスト
- その後 `Upgrade All` を使用:
- `Edit → Preferences → Spine` に移動
@ -68,49 +68,49 @@
- `Upgrade All` ボタンをクリック
### 準備しないと何が壊れるか:
- シーンまたはプレハブを保存すると、シーンまたはプレハブ内のコンポーネント参照が失われる可能性がありますnull に設定)
- すべてのシーン/プレハブをアップグレードする前にビルドすると、ビルドでコンポーネントが欠落します
- シーンまたはプレハブを保存すると、シーンまたはプレハブ内のコンポーネント参照が失われる可能性がありますnull に設定されます
- すべてのシーン/プレハブをアップグレードする前にビルドしてしまうと、ビルドでコンポーネントが欠落します
**ステップ 1-3 を完了せずに続行しないでください。プロジェクトが壊れるリスクがあります。**
---
## 📦 4.2 からのオプショナル 2 ステップ移行
## 📦 (任意)4.2 からの2ステップ移行
spine-unity 4.2 から移行する場合、潜在的な問題を分離するために 2 ステップでアップグレードする方が簡単な場合があります:
spine-unity 4.2から移行する場合、潜在的な問題を分離するために2ステップでアップグレードする方が簡単な場合があります
### ステップ 14.3-beta プリスプリットバージョンへアップグレード
まず、コンポーネント分離変更前の 4.3-beta バージョンにアップグレードします
### ステップ 1コンポーネント分離前の4.3-betaバージョンへアップグレードする
まず、コンポーネント分離の変更が加わる前の4.3-betaバージョンにアップグレードしてください
- **コミットハッシュ**: `a07b1de`
- **Git URL でパッケージを追加**: `https://github.com/EsotericSoftware/spine-runtimes.git?path=spine-csharp/src#a07b1de`
- または **unitypackage**: https://esotericsoftware.com/files/runtimes/unity/spine-unity-4.2-2025-09-26.unitypackage
- または **unitypackage** を利用: https://esotericsoftware.com/files/runtimes/unity/spine-unity-4.2-2025-09-26.unitypackage
この中間ステップにより
- 4.2 → 4.3 spine-csharp API 変更に関連する問題を最初に修正し、プロジェクトが動作することを確認
- 続行する前にプロジェクトが安定していることを検証
- この 4.3-beta バージョンでプロジェクトが正常に動作したら、ステップ 2 に進む前に別のバックアップを作成
この中間ステップで、次の作業を行ってください
- 4.2 → 4.3 spine-csharp API 変更に関連する問題を修正し、プロジェクトが正常に動作することを確認してください
- 続行する前にプロジェクトが安定していることを検証してください
- この 4.3-beta バージョンでプロジェクトが正常に動作したら、ステップ2に進む前に別のバックアップを作成してください
### ステップ 2最新の 4.3-beta バージョンへのアップグレード(分離されたコンポーネント付き)
4.3-beta でプロジェクトが正常に動作したら:
- 最新の 4.3-beta パッケージにアップグレード
- 上記のコンポーネント分離移行ガイドに従う
- 分離されたアニメーションとレンダリングコンポーネントを処理
### ステップ 2最新の4.3-betaバージョン分離コンポーネントに対応したバージョンへアップグレードする
4.3-betaでプロジェクトが正常に動作したら
- 最新の4.3-betaパッケージにアップグレードしてください
- 先述のコンポーネント分離移行ガイドに従ってください
- 分離されたアニメーションコンポーネントとレンダリングコンポーネントを処理してください
この 2 ステップアプローチは問題の分離に役立ちます - 何か問題が発生した場合、4.2 → 4.3 spine-csharp の変更によるものか、コンポーネント分離に特有のものかがわかります。
この2ステップアプローチは、問題の原因を分離するのに役立ちます。つまり、何か問題が発生した場合に、それが 4.2 → 4.3 spine-csharp の変更によるものか、コンポーネント分離によるものかを判断できます。
---
## 📋 はじめに
## 📋 概要
spine-unity 4.3 ランタイムは、主要なアーキテクチャ変更を導入します:**コンポーネント継承ではなく、2 つの独立したコンポーネントを使用してアニメーションとレンダリングを分離**。これにより、以前は不可能だった `SkeletonMecanim` をアニメーションに、`SkeletonGraphic` をレンダリングに使用するなどの柔軟な組み合わせが可能になりま
spine-unity 4.3 ランタイムでは、大きなアーキテクチャ変更として、**コンポーネント継承ではなく、2つの独立したコンポーネントでアニメーションとレンダリングを分離する仕組みが導入されました**。これにより、以前は不可能だった `SkeletonMecanim` をアニメーションに、`SkeletonGraphic` をレンダリングに使用するなどの柔軟な組み合わせが可能になりました
### 主な変更点:
- **コンポーネント分離**: 以前の一体型コンポーネントが個別のレンダリングとアニメーションコンポーネントに分離されました。
- **個別のコンポーネント**: `SkeletonAnimation``SkeletonMecanim``SkeletonRenderer` から継承されなくなりました。現在は`SkeletonRenderer``SkeletonGraphic` などの個別のレンダラーコンポーネント(`ISkeletonRenderer` のサブクラス)と連携して動作します。
- **インターフェースの更新**: 更新されたプロパティ名を持つ新しい `ISkeletonRenderer` および `ISkeletonAnimation` インターフェース。
- **設定のグループ化**: メッシュ生成設定が `MeshSettings` プロパティの下にグループ化されました。
- **自動移行**: `AUTO_UPGRADE_TO_43_COMPONENTS` が定義されている場合(*デフォルト*、Unity エディターは自動的にコンポーネントを新しい分離コンポーネントにアップグレードし、廃止されたフィールドを転送します。
- **すべてのシーンとプレハブをアップグレード**: すべてのシーンとプレハブを一度にアップグレードするには、`Edit - Preferences - Spine` に移動し、`Automatic Component Upgrade` の下 `Upgrade Scenes & Prefabs` - `Upgrade All` をクリックします。
- **コンポーネント分離**: 以前の一体型コンポーネントが、レンダリングとアニメーションでそれぞれ別のコンポーネントに分離されました。
- **個別のコンポーネント**: `SkeletonAnimation``SkeletonMecanim``SkeletonRenderer` から継承されなくなり、`SkeletonRenderer``SkeletonGraphic` などの個別のレンダラーコンポーネント(`ISkeletonRenderer` のサブクラス)と連携して動作します。
- **インターフェースの更新**: プロパティ名が更新された新しい `ISkeletonRenderer` および `ISkeletonAnimation` インターフェース。
- **設定のグループ化**: メッシュ生成設定が `MeshSettings` プロパティにまとめられました。
- **自動移行**: `AUTO_UPGRADE_TO_43_COMPONENTS` が定義されている場合(*デフォルト*、Unityエディターがコンポーネントを新しい分離コンポーネントに自動アップグレードし、古いフィールドを移行します。
- **すべてのシーンとプレハブをアップグレード**: すべてのシーンとプレハブを一度にアップグレードするには、`Edit - Preferences - Spine` に移動し、`Automatic Component Upgrade` の下 `Upgrade Scenes & Prefabs` - `Upgrade All` をクリックします。
### コンポーネントの関係:
@ -131,19 +131,19 @@ spine-unity 4.3 ランタイムは、主要なアーキテクチャ変更を導
### 破壊的変更
#### 1. インターフェースの変更
- `IHasSkeletonRenderer` インターフェースのプロパティ名が `SkeletonRenderer` から `Renderer` に、型が `SkeletonRenderer` から `ISkeletonRenderer` に変更。
- `IHasSkeletonRenderer` インターフェースのプロパティ名が `SkeletonRenderer` から `Renderer` に、型が `SkeletonRenderer` から `ISkeletonRenderer` に変更されました
#### 2. イベントの変更
- `SkeletonRendererDelegate` 型は `SkeletonRenderer` のネストされた型ではなくなりました。
コンパイルエラーを修正するには、`SkeletonRenderer.SkeletonRendererDelegate``SkeletonRendererDelegate` に置き換えます
- `BeforeApply` デリゲート型が `SkeletonRendererDelegate` から `SkeletonAnimationDelegate` に変更。
- `SkeletonRendererDelegate` 型が `SkeletonRendererDelegate(SkeletonRenderer)` から `SkeletonRendererDelegate(ISkeletonRenderer)` に変更。これは次のイベントに影響します:`OnRebuild``OnMeshAndMaterialsUpdated`
コンパイルエラーを修正するには、メソッドパラメータを `SkeletonRenderer` から `ISkeletonRenderer` に変更します
- ボーンイベント `UpdateLocal``UpdateWorld``UpdateComplete``ISkeletonAnimation` クラス(`SkeletonAnimation``SkeletonMecanim`)から `ISkeletonRenderer` クラスSkeletonRenderer、SkeletonGraphicに移動。デリゲート型を `UpdateBonesDelegate` から `SkeletonRendererDelegate` に変更、パラメータは `ISkeletonAnimation` ではなく `ISkeletonRenderer`
コンパイルエラーを修正するには、`SkeletonRenderer.SkeletonRendererDelegate``SkeletonRendererDelegate` に置き換えてください
- `BeforeApply` デリゲート型が `SkeletonRendererDelegate` から `SkeletonAnimationDelegate` に変更されました
- `SkeletonRendererDelegate` 型が `SkeletonRendererDelegate(SkeletonRenderer)` から `SkeletonRendererDelegate(ISkeletonRenderer)` に変更されました。これは `OnRebuild` および `OnMeshAndMaterialsUpdated` イベントに影響します
コンパイルエラーを修正するには、メソッドパラメータを `SkeletonRenderer` から `ISkeletonRenderer` に変更してください
- ボーンイベント `UpdateLocal``UpdateWorld``UpdateComplete``ISkeletonAnimation` クラス(`SkeletonAnimation``SkeletonMecanim`)から `ISkeletonRenderer` クラスSkeletonRenderer、SkeletonGraphicに移動しました。デリゲート型を `UpdateBonesDelegate` から `SkeletonRendererDelegate` に変更し、パラメータを `ISkeletonAnimation` から `ISkeletonRenderer` に変更しました
#### 2. メソッドの変更
- `LateUpdateMesh()``UpdateMesh()` に変更されました。
- `MeshGenerator.TryReplaceMaterials` を削除。
- `MeshGenerator.TryReplaceMaterials` を削除しました
#### 3. 実行順序
- `SkeletonRenderer``SkeletonGraphic` コンポーネントは `DefaultExecutionOrder(1)]` を受け取り、デフォルト*order=0*スクリプトの後に実行されます。これにより、`UpdateTiming``InLateUpdate` に設定されていても、スケルトンが更新される前にアニメーションが適用されます。
@ -165,7 +165,7 @@ spine-unity 4.3 ランタイムは、主要なアーキテクチャ変更を導
| `skeletonRenderer.calculateTangents` | `skeletonRenderer.MeshSettings.calculateTangents` | MeshSettings に移動 |
#### 非推奨の小文字属性
- 小文字の属性 `initialFlipX``initialFlipY``initialSkinName` は非推奨となり、将来のランタイムバージョンで削除されます。代わりに同じ名前の大文字のプロパティを使用してください:`InitialFlipX``InitialFlipY``InitialSkinName`
- 小文字の属性 `initialFlipX``initialFlipY``initialSkinName` は非推奨となりました。将来のランタイムバージョンで削除される予定です。代わりに同じ名前の大文字のプロパティ、`InitialFlipX``InitialFlipY``InitialSkinName` を使用してください
---
@ -175,8 +175,8 @@ spine-unity 4.3 ランタイムは、主要なアーキテクチャ変更を導
#### 1. コンポーネントアーキテクチャ
- **SkeletonAnimation は SkeletonRenderer とは別のコンポーネントになりました**、もはやサブクラスではありません。
- レンダラーへのアクセス:`skeletonAnimation.Renderer`
- レンダラーからのアニメーションアクセス:`skeletonRenderer.Animation`
- レンダラーにアクセスしたい場合は `skeletonAnimation.Renderer` を使用してください
- レンダラーからアニメーションにアクセスしたい場合は `skeletonRenderer.Animation` を使用してください
#### 2. プロパティの変更
- `state` はパブリックではなくなりました。代わりに `AnimationState` プロパティを使用します。
@ -189,16 +189,17 @@ spine-unity 4.3 ランタイムは、主要なアーキテクチャ変更を導
### フィールドとプロパティの移行
`SkeletonAnimation` は独立したコンポーネントになったため、`SkeletonRenderer` が提供するメソッドとプロパティは `SkeletonAnimation` オブジェクトから直接アクセスできなくなりました。`SkeletonAnimation` オブジェクトから関連する `ISkeletonRenderer` にアクセスするための `skeletonAnimation.Renderer` プロパティと、
`SkeletonRenderer` または `SkeletonGraphic` オブジェクトから関連する `ISkeletonAnimation` にアクセスするための `skeletonRenderer.Animation` プロパティがあります。`ISkeletonRenderer` インターフェースで公開されていないメンバーについては、`skeletonAnimation.Renderer``SkeletonRenderer` または `SkeletonGraphic` にキャストしてレンダラーメンバー変数にアクセスできます。
`SkeletonAnimation` は独立したコンポーネントになったため、`SkeletonRenderer` が提供するメソッドとプロパティは `SkeletonAnimation` オブジェクトから直接アクセスできなくなりました。`SkeletonAnimation` オブジェクトから対応する `ISkeletonRenderer` にアクセスしたい場合は、`skeletonAnimation.Renderer` プロパティを使用してください。
また、`SkeletonRenderer``SkeletonGraphic` オブジェクトから関連する `ISkeletonAnimation` にアクセスしたい場合は、`skeletonRenderer.Animation` プロパティうを使用してください。
`ISkeletonRenderer` インターフェースで公開されていないメンバーにアクセスする必要がある場合は、`skeletonAnimation.Renderer``SkeletonRenderer` または `SkeletonGraphic` にキャストしてレンダラーメンバー変数にアクセスできます。
### サンプルコード
### コード
```csharp
// SkeletonAnimation から SkeletonRenderer プロパティへの古いアクセス
// 旧式の SkeletonAnimation から SkeletonRenderer プロパティへのアクセス方法
skeletonAnimation.zSpacing = 0.1f;
skeletonAnimation.AnySkeletonRendererProperty;
// SkeletonAnimation から SkeletonRenderer プロパティへの新しいアクセス
// 新しくなった SkeletonAnimation から SkeletonRenderer プロパティへのアクセス方法
skeletonAnimation.Renderer.MeshSettings.zSpacing = 0.1f; // ISkeletonRenderer インターフェースで公開
var skeletonRenderer = (SkeletonRenderer)skeletonAnimation.Renderer;
skeletonRenderer.AnySkeletonRendererProperty; // ISkeletonRenderer インターフェースで公開されていない
@ -213,7 +214,7 @@ skeletonRenderer.AnySkeletonRendererProperty; // ISkeletonRenderer インター
#### 1. コンポーネントアーキテクチャ
- **SkeletonMecanim は SkeletonRenderer とは別のコンポーネントになりました**、もはやサブクラスではありません。
- [SkeletonAnimation](#▶️-skeletonanimation) と同じアクセスパターン
- アクセスパターンは[SkeletonAnimation](#▶️-skeletonanimation) と同じです
#### 2. メソッドの変更
- `Update()` はパブリックではなくなりました。
@ -221,7 +222,7 @@ skeletonRenderer.AnySkeletonRendererProperty; // ISkeletonRenderer インター
### フィールドとプロパティの移行
上記の [SkeletonAnimation](#▶️-skeletonanimation) と同じ。
先述の [SkeletonAnimation](#▶️-skeletonanimation) と同じです
---
## ▶️ SkeletonGraphic
@ -229,16 +230,16 @@ skeletonRenderer.AnySkeletonRendererProperty; // ISkeletonRenderer インター
### 破壊的変更
#### 1. コンポーネントアーキテクチャ
- **SkeletonGraphic はアニメーションをカバーしなくなりました、個別のアニメーションコンポーネントとして SkeletonAnimation を追加**。
- アニメーションへのアクセス:`skeletonGraphic.Animation`
- **SkeletonGraphic はアニメーションを扱わなくなりました。個別のアニメーションコンポーネントとして SkeletonAnimation を追加してください**。
- アニメーションにアクセスしたい場合は `skeletonGraphic.Animation` を使用してください
#### 2. 既存の参照を SkeletonAnimation に変更
コンポーネントがアニメーションプロパティを変更するためだけに `SkeletonGraphic` への参照を保持している場合は、参照タイプを `SkeletonAnimation` に変更することをお勧めします。
これにより、`((SkeletonAnimation)skeletonGraphic.Animation).AnimationState` のようにキャストする代わりに
`skeletonAnimation.AnimationState` のようにアニメーション状態にアクセスできます。シリアライズされたコンポーネント変数の名前を変更したい場合は、変数定義の前に `[FormerlySerializedAs("previousName")]` 属性を使用して、既存のシリアライズ値を自動的に再割り当てできることに注意してください
`skeletonAnimation.AnimationState` のようにAnimationStateにアクセスできます。シリアライズされたコンポーネント変数の名前を変更したい場合は、変数定義の前に `[FormerlySerializedAs("previousName")]` 属性を付与することで、既存のシリアライズ値を自動的に再割り当てできます
#### サンプルコード
#### コード
```csharp
// 以前のシリアライズされた値を自動的に再割り当て
[FormerlySerializedAs("skeletonGraphic")]
@ -246,8 +247,8 @@ public SkeletonAnimation skeletonAnimation; // アップグレード後も参照
```
#### 3. プロパティの変更
- プロパティ `AnimationState` を削除 - 代わりに `SkeletonAnimation` コンポーネントから照会します。
- `MeshGenerator` はパブリックではなくなりました - 代わりに `MeshSettings` プロパティと `SetMeshSettings()` を使用します。
- プロパティ `AnimationState` を削除しました。 代わりに `SkeletonAnimation` コンポーネントから照会します。
- `MeshGenerator` はパブリックではなくなりました代わりに `MeshSettings` プロパティと `SetMeshSettings()` を使用します。
- `MaterialsMultipleCanvasRenderers` の型が `ExposedList<Material>` から `Material[]` に変更。
#### 4. 作成ヘルパーメソッド
@ -257,8 +258,8 @@ public SkeletonAnimation skeletonAnimation; // アップグレード後も参照
- `AddSkeletonGraphicRenderingComponent` - `SkeletonGraphic` コンポーネントのみを作成。
#### 5. イベントの変更
- デリゲートシグネチャが `SkeletonRendererDelegate(SkeletonGraphic)` から `SkeletonRendererDelegate(ISkeletonRenderer)` に変更。これは次のイベントに影響します:`OnRebuild``OnMeshAndMaterialsUpdated`
コンパイルエラーを修正するには、メソッドパラメータを SkeletonGraphic から ISkeletonRenderer に変更します
- デリゲートシグネチャが `SkeletonRendererDelegate(SkeletonGraphic)` から `SkeletonRendererDelegate(ISkeletonRenderer)` に変更されました。これは、`OnRebuild` および `OnMeshAndMaterialsUpdated` イベントに影響します:
コンパイルエラーを修正するには、メソッドパラメータを SkeletonGraphic から ISkeletonRenderer に変更してください
#### 6. 実行順序
- `SkeletonRenderer``SkeletonGraphic` コンポーネントは `DefaultExecutionOrder(1)]` を受け取り、デフォルト*order=0*スクリプトの後に実行されます。これにより、`UpdateTiming``InLateUpdate` に設定されていても、スケルトンが更新される前にアニメーションが適用されます。
@ -288,10 +289,10 @@ public SkeletonAnimation skeletonAnimation; // アップグレード後も参照
## ⚠️ その他の重要な注意事項
### コンポーネント参照の損失を防ぐ
`SkeletonRenderer` コンポーネントを参照し、`SkeletonAnimation` または `SkeletonMecanim` ターゲットを持っていた他のコンポーネント(例:`SkeletonRenderSeparator`)は、アップグレード後に *null* を指すようになります。`SkeletonAnimation``SkeletonMecanim` コンポーネントはもはや `SkeletonRenderer` のサブクラスではなく、有効な参照ではないためです。手動の解決策は、型を `SkeletonRenderer` のままにして `SkeletonAnimation` への参照を失うことです(*none* に設定されます)。その後、シーンとプレハブで失われた参照を手動で再割り当てする必要があります。半自動の代替解決策は次のとおりです:`SkeletonRenderer` 変数の型を `Component` に変更して(オブジェクト参照をキャプチャして失わないようにする)、`SkeletonRenderer`(または `SkeletonAnimation`)型の 2 番目の変数を追加し、プログラム的に `Component` 変数から読み取って新しく追加された変数に割り当てます。たとえば、コンポーネントに `[ExecuteAlways]` タグを追加して、Unity エディターの `Awake()` で自動的にこれを実行できます。
### コンポーネント参照の損失を防ぐには
`SkeletonRenderer` コンポーネントを参照し、`SkeletonAnimation` または `SkeletonMecanim` ターゲットを持っていた他のコンポーネント(例:`SkeletonRenderSeparator`)は、アップグレード後に *null* を指すようになります。`SkeletonAnimation``SkeletonMecanim` コンポーネントはもはや `SkeletonRenderer` のサブクラスではなく、有効な参照ではないためです。手動の解決策は、型を `SkeletonRenderer` のままにして `SkeletonAnimation` への参照を失うことです(*none* に設定されます)。その後、シーンとプレハブで失われた参照を手動で再割り当てする必要があります。半自動の代替解決策は次のとおりです:`SkeletonRenderer` 変数の型を `Component` に変更して(オブジェクト参照をキャプチャして失わないようにする)、`SkeletonRenderer`(または `SkeletonAnimation`)型の 2 番目の変数を追加し、プログラム的に `Component` 変数から読み取って新しく追加された変数に割り当てます。たとえば、コンポーネントに `[ExecuteAlways]` タグを追加して、Unityエディターの `Awake()` で自動的にこれを実行できます。
#### サンプルコード
#### コード
```csharp
// アップグレード前の古いクラス
public class TestMigrateReferences : MonoBehaviour {
@ -334,34 +335,34 @@ public class TestMigrateReferences : MonoBehaviour {
`ISkeletonRenderer``ISkeletonAnimation` コンポーネントが分離されたため、これらのコンポーネントのいずれかを有効/無効にするスクリプトは、**両方を有効/無効にする**ように調整する必要があります。
### SkeletonUtilityBone の動作変更
Override モードでは、`SkeletonUtilityBone``UpdatePhase.World` Transform を調整しなくなり、`UpdatePhase.Complete` でのみ調整します(冗長な更新を削除)。
Overrideモードでは、`SkeletonUtilityBone``UpdatePhase.World`Transformを調整しなくなりました。`UpdatePhase.Complete` でのみ調整します(冗長な更新を削除)。
### 自動移行
- `AUTO_UPGRADE_TO_43_COMPONENTS` が定義されている場合、Unity エディターは廃止されたフィールドを自動的に転送します。
- `AUTO_UPGRADE_TO_43_COMPONENTS` が定義されている場合、Unityエディターは廃止されたフィールドを自動的に転送します。
- すべてのシーンとプレハブを一度にアップグレードするには、`Edit - Preferences - Spine` に移動し、`Upgrade Scenes & Prefabs` - `Upgrade All` を選択します。
- 各クラスの `UpgradeTo43``TransferDeprecatedFields()` メソッドがシリアライズされたデータの移行を処理します。
- ランタイムアクセスには手動のコード更新が必要です。
### 最も一般的な変更の要約
1. アニメーションコンポーネントからレンダリングプロパティにアクセスするには **`.Renderer.`** プレフィックスを追加
2. メッシュ生成設定にアクセスするには **`.MeshSettings.`** を追加
3. SkeletonGraphic から AnimationState にアクセスする際に **SkeletonAnimation にキャスト**。
4. 具体的な型からインターフェースへの**デリゲートメソッドシグネチャ更新**。
5. アップグレード後、上記の移行パターンを使用して**失われた参照を再割り当て**。
1. アニメーションコンポーネントからレンダリングプロパティにアクセスする場合は、プレフィックス **`.Renderer.`** を付けてアクセスしてください
2. メッシュ生成設定にアクセスするには **`.MeshSettings.`** を付けてアクセスしてください
3. SkeletonGraphic から AnimationState にアクセスする場合は、 **SkeletonAnimation にキャストしてください**。
4. 具体的な型からインターフェースへの**デリゲートメソッドシグネチャ更新**してください
5. アップグレード後、上記の移行パターンを使用して**失われた参照を再割り当て**してください
---
## 自動アップグレードチェックの無効化
すべての Spine アセット、シーン、プレハブの移行が完了したら、エディターのパフォーマンスを向上させるために自動アップグレードチェックを無効にできます
すべてのSpineアセット、シーン、プレハブの移行が完了したら、エディターのパフォーマンスを向上させるために自動アップグレードチェックを無効にしてください
1. `Edit → Preferences → Spine` に移動
2. `Automatic Component Upgrade` の下で、`Split Component Upgrade``Disable` をクリック
これにより、Unity エディターがシーンまたはプレハブのロード時にコンポーネントの移行が必要かどうかを判断するためのエディター内チェックの実行を停止します。追加のアセットを移行する必要がある場合は、いつでも再度有効にできます。
これにより、Unityエディターがシーンまたはプレハブのロード時にコンポーネントの移行が必要かどうかを判断するためのエディター内チェックの実行を停止します。追加のアセットを移行する必要がある場合は、いつでも再度有効にできます。
---
## ヘルプが必要ですか?
## ヘルプが必要な場合
移行中に予期しない問題が発生した場合、またはコンポーネントプロパティが正しく移行されないことがわかった場合は、[Spine フォーラム](https://esotericsoftware.com/forum) に投稿してください。自動移行をできるだけ痛みのないものにするために、喜んでお手伝いし、問題を修正します。
移行中に予期しない問題が発生した場合、コンポーネントプロパティが正しく移行されない場合は、どうぞ遠慮なく[Spineフォーラム](https://esotericsoftware.com/forum)で質問してください。できるだけスムーズに自動移行できるように、喜んで問題解決のお手伝いをします。