Placer une image d'interface utilisateur entre deux sprites 2D dans Unity

8

Je développe un jeu 2D avec Unity.

J'ai deux objets sprite rendus en utilisant SpriteRenderer.

Avec le nouveau système d'interface utilisateur, je veux l'utiliser pour afficher une image entre mes deux sprites. Autrement dit, mon premier sprite a un ordre de tri de 100, puis mon image d'interface utilisateur a un ordre de tri de 200 et mon deuxième sprite a un ordre de tri de 300.

Est-ce possible?

J'ai essayé d'utiliser des calques de tri, mais quoi qu'il en soit, l'image de l'interface utilisateur semble toujours superposer mes deux sprites.

Oxyde
la source

Réponses:

2

C'est assez simple à faire, Weexe était en fait sur le bon chemin, il n'a pas donné toutes les informations dont vous avez besoin.

Créez d'abord vos 2 sprites et une toile contenant l'image que vous souhaitez entre les deux. Réglez "Ordre dans le calque" sur 2 et 0 pour les 2 Sprites que vous souhaitez en arrière-plan ou au premier plan. Un nombre plus élevé signifie qu'il est à l'avant. Tous les éléments, y compris l'interface utilisateur, devront se trouver sur le même calque de tri.

Maintenant, cliquez sur votre canevas et réglez le mode de rendu sur World Space , cela est nécessaire pour que vous ayez réellement la possibilité d'aller entre les sprites du monde. Parce que maintenant vous avez également l'option Tri des calques et ordre dans les calques sur votre toile. Réglez l'Ordre dans la Couche sur 1 et la Couche de Tri sur la même chose que les 2 Sprites !

Remarque: Si vous ne trouvez pas votre image d'interface utilisateur, notez qu'elle est en fait super grande dans la scène, vous devrez la réduire fortement et la positionner l'image (pas la toile). Si vous voulez le trouver, faites un zoom arrière et vous commencerez à le voir ( Astuce: s'il s'agit en fait d'une petite image, vous devez activer l'outil de transformation pour savoir où il est actuellement positionné).

Je viens de recréer cela en une minute avec des exemples d'images, ça marche définitivement. Si vous avez d'autres questions, faites un commentaire. Je serai ravi de vous aider.

CrystaX
la source
1

Vous devez utiliser la référence "World Space" du mode de rendu: http://docs.unity3d.com/Manual/UICanvas.html

Weexe
la source
Avec le mode de rendu "World Space", l'image disparaît simplement. Je ne peux pas le voir dans la vue du jeu.
Oxide
Son explication était plutôt incomplète. Une fois le mode de rendu réglé sur "World Space", vous devez ensuite positionner l'image dans votre scène. As-tu fais ça?
jhocking
1
Cette réponse devrait être améliorée avec des informations supplémentaires. Pourquoi ce mode de rendu devrait-il être utilisé? Quel problème résout-il? Y a-t-il d'autres étapes?
MichaelHouse
1

Je me bats avec ça depuis une heure et j'ai finalement trouvé une solution.

Je travaillais avec une interface utilisateur World Canvas et je ne pouvais pas le faire fonctionner correctement avec les sprites: d'abord, les sprites étaient toujours au sommet, puis les sprites disparaissaient complètement même si l'image de l'interface utilisateur au-dessus d'eux n'était pas complètement opaque.

Donc, basé sur: http://answers.unity3d.com/questions/832834/unity-2d-46b-ui-why-are-instantiated-prefab-sprite.html

Vous devez définir «Ordre dans le calque» du «Sprite Renderer» de votre image-objet d'arrière-plan sur 0.
Ensuite, définissez «Ordre dans le calque» de votre composant Canvas UI sur 1.
Le sprite d'avant-plan «Ordre dans le calque» doit être défini sur 2 .
La couche de triage est par défaut pour les 3 éléments.

Fondamentalement, vous pouvez travailler avec plus d'un canevas d'espace mondial et plus d'un sprite (au cas où vous voudriez plusieurs couches de trucs 2D) et définir les couches de tri correctement (rappelez-vous que vous ne pouvez pas définir individuellement l'ordre des couches de l'élément d'interface utilisateur. est défini par l'ordre du GameObject dans la hiérarchie. À la place, vous devez définir l'ordre dans la couche pour l'interface utilisateur dans le canevas)

le petit assistant du Père Noël
la source