problème de taille de sprite dans un canvas

Questions à propos du GUI, y compris la partie script.
Avatar de l’utilisateur
tenkai188
Messages : 34
Inscription : 29 Déc 2017 14:59

problème de taille de sprite dans un canvas

Message par tenkai188 » 15 Août 2021 20:31

Bonjour,

je tente de créé un inventaire.
J'ai donc créé un canvas dans lequel j'ai placé un panel qui contient 2 panel:
un dans lequel je place l'inventaire et un dans lequel je place la description des objets.
Mais étrangement toutes les images s'affichant dans le premier panel et donc dans le canvas ont leur taille qui semble diminué de moitié :(

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: problème de taille de sprite dans un canvas

Message par jmhoubre » 15 Août 2021 21:56

Bonsoir,
avec des éléments aussi précis, je ne pense pas pouvoir t'aider beaucoup. Quelques éléments cependant :
  • Comment est configuré le Canvas, en particulier l'UI Scale Mode dans la section Canvas Scaler ?
  • Les sprites ont quel Texture Type ?
  • Quelle est la taille réelle des sprites (la taille du fichier png ou équivalent) ? Et quel est le pixels per unit ?
les images ... ont leur taille qui semble diminué de moitié
De moitié par rapport à quoi ?

Avatar de l’utilisateur
tenkai188
Messages : 34
Inscription : 29 Déc 2017 14:59

Re: problème de taille de sprite dans un canvas

Message par tenkai188 » 15 Août 2021 23:09

Bonsoir et merci de m'avoir répondu
Comment est configuré le Canvas, en particulier l'UI Scale Mode dans la section Canvas Scaler ?
Canvas scaler :
UI Scale Mode : Scale with Screen Size
Reference resolution : x : 1920 y :1080
Screen match mode : Expand
Reference pixels per unit : 32
Les sprites ont quel Texture Type ?
Quelle est la taille réelle des sprites (la taille du fichier png ou équivalent) ? Et quel est le pixels per unit ?
Concernant les Sprites se sont des png réalisé avec aseprite de taille 32x32 pixel
Une fois importer dans unity :
Texture type : Sprite (2D and UI)
Pixel per unit : 32
Filter mode : point (no filter)
Compression : none
De moitié par rapport à quoi ?
Par exemple une sprite de 32x32 pixel une fois ajouté sur le panel aurait l’air de mesurer 16x16

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: problème de taille de sprite dans un canvas

Message par jmhoubre » 15 Août 2021 23:28

Je pense qu'en passant le pixel per unit à 16 cela pourrait résoudre ton souci. Je ne vérifie pas, je suis en train d'éteindre mon PC.

Avatar de l’utilisateur
tenkai188
Messages : 34
Inscription : 29 Déc 2017 14:59

Re: problème de taille de sprite dans un canvas

Message par tenkai188 » 16 Août 2021 12:34

non aucun changement :/

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: problème de taille de sprite dans un canvas

Message par jmhoubre » 16 Août 2021 23:07

Désolé, j'ai été un peu rapide dans ma réponse. Je parlais du pixel per unit des images. Il faut faire Apply après le changement.

Avatar de l’utilisateur
tenkai188
Messages : 34
Inscription : 29 Déc 2017 14:59

Re: problème de taille de sprite dans un canvas

Message par tenkai188 » 17 Août 2021 15:56

C'est ce que j'ai fait mais pas de changement
Par contre, j'utilise le script suivant pour placer les objet dans l'inventaire
Le problème peut il venir de là ?
(la classe "PlayerInventory" est sert simplement à créé une liste dans laquelle sont placé les objets qui sont des scriptable objets)

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class InventoryManager : MonoBehaviour
{
    [Header("Inventory Information")]
    public PlayerInventory playerInventory;
    [SerializeField] private GameObject blankInventorySlot;
    [SerializeField] private GameObject inventoryPanel;
    [SerializeField] private Text descriptionText;
    [SerializeField] private GameObject useButton;

    public void SetTextAndButton(string description, bool buttonActive)
    {
        descriptionText.text = description;
        if (buttonActive)
        {
            useButton.SetActive(true);
        }
        else
        {
            useButton.SetActive(true);
        }
    }

    void MakeInventorySlots()
    {
        if(playerInventory)
        {
            for(int i = 0; i < playerInventory.myInventory.Count;i++)
            {
                GameObject temp = 
                    Instantiate(blankInventorySlot,
                    inventoryPanel.transform.position, Quaternion.identity);
                temp.transform.SetParent(inventoryPanel.transform);
                InventorySlot newSlot = temp.GetComponent<InventorySlot>();
                if(newSlot)
                {
                    newSlot.Setup(playerInventory.myInventory[i], this);
                }
                
            }
        }
    }

    // Start is called before the first frame update
    void Start()
    {
        MakeInventorySlots();
        SetTextAndButton("", false);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: problème de taille de sprite dans un canvas

Message par jmhoubre » 17 Août 2021 19:53

Bonsoir,

je ne vois rien d'anormal dans le script. Vérifie bien le scale de ton prefab blankInventorySlot et du parent inventoryPanel.

Et si tu places un sprite directement sur le canvas ? Et un Slot vide avec un prefab ?

Tu utilises un Grid Layout Group peut-être ?

Avatar de l’utilisateur
tenkai188
Messages : 34
Inscription : 29 Déc 2017 14:59

Re: problème de taille de sprite dans un canvas

Message par tenkai188 » 17 Août 2021 21:34

Bonsoir,
j'ai vérifié tous les scale et elles sont toutes à 1 sauf celle du canvas est qui est grisé et donc impossible a modifié avec X:0.50277 Y:0.50277 Z:0.50277
et si je place un sprite directement dans le canvas ou le panel, il est de taille normal
J'utilise un "grid layout group" dans le contente du viewport
Architecture:
PauseCanvas
-PausePanel
--InventoryImage
---Scroll View
----viewport
-----Content
----scroollbar horizontal
----scroollbar vertcial
--Description image

Grid Layout group:
Padding:
left 16
right 16
top 16
bottom16
celle size x:32 y:32
spacing x:16 y:16
start corner: UpperLeft
start axis: horizontal
child aligment: middle center
constraint: flexible

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: problème de taille de sprite dans un canvas

Message par jmhoubre » 18 Août 2021 10:25

Si un sprite posé directement sur la canvas a une taille normale, il est possible que le paramétrage du layout soit incorrect. J'ai rouvert un de mes essais d'inventaire,, et mon grid layout a pour taille de cellule 96 x 96. As-tu essayé de modifier cette valeur ?

Répondre

Revenir vers « L'interface GUI »