Unityで2つの2Dスプライトの間にUI画像を配置する


8

Unityで2Dゲームを開発しています。

を使用してレンダリングされた2つのスプライトオブジェクトがありますSpriteRenderer

新しいUIシステムでは、それを使用して2つのスプライトのに画像を表示します。つまり、最初のスプライトの並べ替え順序は100、次にUIイメージの並べ替え順序は200、2番目のスプライトの並べ替え順序は300です。

それは可能ですか?

並べ替えレイヤーを使用してみましたが、UIイメージが常に2つのスプライトをオーバーレイしているようです。

回答:


2

これはかなり簡単に実行できます。Weexeは実際には正しいパスにあり、必要と思われる情報全体を提供していませんでした。

最初に、2つのスプライトと、間にイメージを保持するCanvasを作成します。 バックグラウンドまたはフォアグラウンドで使用する2つのスプライトについて、「レイヤーの順序」を2および0に設定します。数値が大きいほど、前面にあります。UIを含むすべての要素は、同じ並べ替えレイヤー上にある必要があります。

次に、キャンバスをクリックして、レンダリングモードをワールドスペース設定します。これは、ワールド内のスプライト間を移動するオプションを実際に取得するために必要です。Cuzには、CanvasにもSorting LayerとOrder in Layerオプションがあります。レイヤーの順序を1に設定し、並べ替えレイヤーを2つのスプライトと同じに設定します。

注: UI画像が見つからない場合は、実際にはシーンで非常に大きいため、サイズを大幅に縮小して画像(キャンバスではない)に配置する必要があります。それを見つけたい場合は、たくさんズームアウトすると、それが表示されます(ヒント:実際に小さな画像の場合は、現在配置されている場所がわかるように変換ツールをアクティブにする必要があります)。

私はこれを例の画像ですぐに再現しましたが、確実に機能します。他に質問がある場合はコメントしてください。喜んでお手伝いします。


1

レンダリングモードの「ワールドスペース」リファレンスを使用する必要があります:http : //docs.unity3d.com/Manual/UICanvas.html


「ワールドスペース」レンダリングモードでは、画像は単に消えます。ゲームビューでは表示されません。
Oxide

彼の説明はかなり不完全でした。レンダリングモードを「ワールドスペース」に設定したら、シーンに画像を配置する必要があります。あなたはそれをやりました?
ジョッキング

1
この回答は、追加情報で改善する必要があります。なぜそのレンダリングモードを使用する必要があるのですか?それは何の問題を解決していますか?他に何か手順はありますか?
MichaelHouse

1

私はこれと1時間戦い続け、ついに解決策を思いつきました。

私はWorld Canvas UIを使用していて、それをスプライトで正しく機能させることができませんでした。最初に、スプライトは常に一番上にあり、その後スプライトはその上のUIイメージが完全に不透明でなくても完全に消えました。

それに基づいて:http : //answers.unity3d.com/questions/832834/unity-2d-46b-ui-why-are-instantiated-prefab-sprite.html

バックグラウンドスプライトの「スプライトレンダラー」の「レイヤーの順序」を0
に設定する
必要があります。次に、UI Canvasコンポーネントの「レイヤーの順序」を1に設定します。フォアグラウンドスプライトの「レイヤーの順序」を2に設定する必要があります。 。
並べ替えレイヤーは3つの要素のデフォルトでした。

基本的に、複数のワールドスペースキャンバスと複数のスプライトを操作し(2D要素の多くのレイヤーが必要な場合)、並べ替えレイヤーを適切に設定できます(UI要素のOrder in Layerを個別に設定できないことに注意してください。階層内のGameObjectの順序によって設定されます。代わりに、CanvasのUIのOrder in Layerを設定する必要があります)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.