docs.unity3d.com
    目次を表示する/隠す

    Sprite Swap サンプル

    以下のサンプルプロジェクトは、スプライトスワップを使用してさまざまな効果や結果を実現する方法を示しています。

    以下に示すサンプルのシーンはすべて、Assets/Samples/2D Animation/[X.Y.Z]/Samples/4 SpriteSwap にあります。

    • Animated Swap (アニメーション化スワップ)
    • Part Swap (部位スワップ)
    • Full Skin Swap (フルスキンスワップ)
    • DLC Swap (DLC スワップ)
    • Skeleton Sharing (スケルトン共有)
    • Runtime Swap (ランタイムスワップ)

    Animated Swap

    このサンプルは、スプライトスワップを使用して、スプライトのスワップとスプライトの 変形 の両方を含むアニメーションの再利用可能なアニメーションクリップを作成する方法を示しています。ノート: このサンプルを使用するには、PSD Importer パッケージをインストールしてください。

    このサンプルの実際の動作を確認するには、シーンファイル 1 Animated Swap.unity を開きます。


    親指を立てるしぐさをしている最初のフレーム。

    このサンプルでは、Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Sprites にある 2 つの異なるソースファイルを使用しています。使用しているアセットは以下のとおりです。

    • dialog.psb
    • dialog gray.psb

    これらのアセットは、Character Rig プロパティを有効にした状態で PSD Importer を使用してインポートされています。両方のアセットには、同じスケルトンを使用してリグが設定されており、各アセットにはアニメーション中にスワップする 2 つの異なる手のスプライトが用意されています。


    手を開いている状態のフレームにスワップ。

    これらは Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 Sprite Swap/Sprite Library にあります。使用しているアセットは以下のとおりです。

    • dialog.spriteLib
    • dialog gray.spriteLib

    このサンプルシーンを再構築するには、以下の手順に従います。

    1. Project ウィンドウから dialog.psb プレハブと dialog gray.psb プレハブの両方をシーンにドラッグします。

    2. Sprite Library コンポーネント を dialog ゲームオブジェクトに追加した後、dialog.spriteLib アセットを Sprite Library Asset プロパティに割り当てます。

    3. Sprite Library コンポーネント を dialog gray ゲームオブジェクトに追加した後、dialog gray.spriteLib アセットを Sprite Library Asset プロパティに割り当てます。

    4. dialog ゲームオブジェクトの階層を展開して、R_arm_2 子ゲームオブジェクトを無効にします。アニメーション中にスワップをするので、このアセットは不要です。

    5. R_arm_1 ゲームオブジェクトに移動し、Sprite Resolver コンポーネント を追加します。Label ドロップダウンメニューまたはサムネイルから R_arm_2 グラフィックを選択します。

    6. dialog gray ゲームオブジェクトでステップ 4-5 を繰り返します。

    7. Animator コンポーネント を dialog ゲームオブジェクトと dialog gray ゲームオブジェクトに追加します。Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 Sprite Swap/Animation/Animators で Dialog Animator Controller アセット を探して、このアセットを Animator コンポーネントの Controller プロパティに割り当てます。

    このサンプルでは、Sprite Library コンポーネントは Sprite Resolver コンポーネントと同じゲームオブジェクトに割り当てられていません。Sprite Resolver は、まず Sprite Resolver が設定されているのと同じゲームアセットから Sprite Library コンポーネントの特定を試み、その後、ゲームオブジェクト階層を上方向に走査していきます。この仕組みがあるため、Sprite Resolver コンポーネントがアタッチされている共通のルートゲームオブジェクトに Sprite Library コンポーネントをアタッチすることで、1 つまたは複数の Sprite Resolver で同じ Sprite Library コンポーネントを使用できます。

    Part Swap

    このサンプルは、所定の API を使用し、Sprite Resolver のデータを変更することでスプライトアセットをスワップする方法を示しています。このサンプルの実際の動作を確認するには、2 Part Swap.unity シーンを開きます。

    このシーンでは、各部位にはスワップ可能な 3 つの異なる外観のオプションが用意されています。以下のグラフィックアセットが Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Sprites にあります。

    • Knight.psb
    • Skeleton.psb
    • Witch.psb

    上記の 3 つのグラフィックアセットすべてから構成されるスプライトを含む Sprite Library アセット が作成されています。Category (カテゴリ) はアクターの体の部位ごとに作成されており、3 つの異なるキャラクターバージョンから派生した 3 つの Entry (エントリー) を含んでいます。このアセットは、Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Sprite Library/Part Swap.spriteLib にあります。

    アクターの 3 つのバージョンそれぞれの対応する部位。部位に応じて名前が付けられています。

    Sprite Library コンポーネントをシーン内の KnightRig ゲームオブジェクトにアタッチします。Part Swap.spriteLib アセットを Sprite Library Asset プロパティに割り当てます。

    KnightRig ゲームオブジェクトの下のすべての Sprite Renderer に Sprite Resolver コンポーネントを追加します。ゲームオブジェクトが表す体の部位に応じて、対応するゲームオブジェクトに合致するスプライトを割り当てます。例えば、KnightRig ゲームオブジェクトにアタッチされている Sprite Resolver に、"Body" カテゴリのスプライトの 1 つを選択するなどです。

    この設定を使用すると、アクターの任意の部位を別のスプライトに個別にスワップできます。

    Swap Part (部位スワップ) スクリプト

    SwapPart という名前のカスタム MonoBehaviour スクリプトが KnightRig ゲームオブジェクトにアタッチされています。このスクリプトは、Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Scripts/Runtime/SwapPart.cs にあります。

    このスクリプトは、スワップ可能なスプライトを取得するために、Sprite Library コンポーネントへの参照を保持します。また、Sprite Resolver コンポーネントで変更可能な、Sprite Library に含まれるスプライトのカテゴリを表すデータの配列も保持します。

    Swap Part スクリプトは、開始すると、Sprite Library コンポーネントで使用されている Sprite Library アセットの取得を試みます。

    var libraryAsset = spriteLibrary.spriteLibraryAsset;
    

    次に、この Sprite Library アセットから、カテゴリに含まれるエントリーとラベル名を取得します。

    var labels = libraryAsset.GetCategoryLabelNames(swapOption.category);
    

    次に、それを使用して UI ドロップダウンリストを作成します。

    UI ドロップダウンリストの値を変更すると、該当するスプライトを使用するように Sprite Resolver コンポーネントが設定されます。

    swapOption.spriteResolver.SetCategoryAndLabel(swapOption.category, swapOption.dropdown.options[x].text);
    

    Full Skin Swap

    このサンプルは、所定の API を使用し、Sprite Library コンポーネントで参照する Sprite Library アセット を変更することでスプライトの外観をスワップする方法を示しています。このサンプルの実際の動作を確認するには、3 Full Swap.unity シーンを開きます。

    このシーンには、スワップ可能な 3 つの異なる外観のアセットオプションがあります。以下のアセットが Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Sprites にあります。

    • Knight.psb
    • Wolf.psb
    • Witch.psb

    Sprite Library の各アセットは、用意されているカテゴリ、エントリー、ラベル名は同一ですが、選択されているスプライトは異なります。以下のアセットが Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Sprite Library にあります。

    • Knight.spriteLib
    • Wolf.spriteLib
    • Witch.spriteLib

    Sprite Library コンポーネントを KnightRig ゲームオブジェクトにアタッチします。Knight.spriteLib アセットを Sprite Library Asset プロパティに割り当てます。

    KnightRig ゲームオブジェクトの下の Sprite Renderer それぞれに Sprite Resolver コンポーネントを追加します。アタッチ先の体の部位に対応する各 Sprite Resolver にスプライトを割り当てます。例えば、torso ゲームオブジェクトにアタッチされている Sprite Resolver には torso スプライトを選択します。

    Swap Full Skin (フルスキンスワップ) スクリプト

    SwapFullSkin という名前のカスタム MonoBehaviour スクリプトが KnightRig ゲームオブジェクトにアタッチされています。このスクリプトは、Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Scripts/Runtime/SwapFullSkin.cs にあります。

    UI のドロップダウンリストの値を変更すると、該当する Sprite Library アセットを Sprite Library コンポーネントに使用するように設定されます。

    spriteLibraryTarget.spriteLibraryAsset = spriteLibraries[value];
    

    DLC Swap

    このサンプルは、所定の API を使用し、Sprite Library コンポーネントで参照する Sprite Library アセットを変更することでスプライトの外観をスワップする方法を示しています。このサンプルは、Full Skin Swap サンプルに基づいています。

    Full Skin Swap の手法との違いは、ランタイムに Sprite Library アセットを AssetBundle からロードし、後で Sprite Library コンポーネントに追加する点です。このサンプルの実際の動作を確認するには、4 DLC Swap.unity シーンを開きます。

    AssetBundle が正しく動作するようにするには、Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Sprite Library にある Skeleton.spriteLib アセットに、対応する AssetBundle タグのラベルが付いていることを確認します。


    "skeleton" というラベルが設定されている Skeleton.spriteLib アセット。

    Load Swap DLC (DLC のロードとスワップ) スクリプト

    LoadSwapDLC という名前のカスタム MonoBehaviour スクリプトが Load DLC ゲームオブジェクトにアタッチされています。このスクリプトは、Assets/Samples/2D Animation/[X.Y.Z]/Samples/5 SpriteSwap/Scripts/Runtime/LoadSwapDLC.cs にあります。

    このスクリプトは、DLC がロードされたときに開始し、AssetBundles をスキャンして Sprite Library アセットを探します。Sprite Library アセットがロードされると、そのエントリーを Full Skin Swap サンプルの SwapFullSkin スクリプトに追加します。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)