Bonjour,
J'ai un panels (rectangle blanc) et une images (rectangle rouge) qui sont dans un panel à gauche et lorsque je les déplace (pour les mettre à droite) j'en crée une copie et cette copie se redimensionnne et je ne sais pas pourquoi.
Dans le canvas, le composant "canvas scaler" et paramètrer sur "scale with screen size"
Lorsque je mets "constant size pixel" je n'ai aucun problème.
[Résolu] canvas scaler: scale with screen size, les éléments se redimensionne lorsque je les déplace
-
- Messages : 30
- Inscription : 23 Déc 2016 15:15
[Résolu] canvas scaler: scale with screen size, les éléments se redimensionne lorsque je les déplace
Dernière édition par polmpolm123 le 08 Juin 2017 14:10, édité 2 fois.
Re: [DB] canvas scaler: scale with screen size, les éléments se redimensionne lorsque je les déplace
Bonjour,
je note l'effort d'explications mais j'ai rien compris!
Par défaut, les éléments UI ont un anchors preset se redimensionnant au parent par rapport à ses ancres.
Pour une 'taille' fixe, il faut cliquer sur le carré en haut à gauche d'un composant RectTransform puis cliquer au milieu sur 'middle center'.
Ceci rend la taille absolu et non plus relative mais aussi la position. Il faudra donc après copie repositionner l’élément et au besoin re-régler ses ancres.
Il est possible d'avoir une taille absolu et un positionnement relatif en mettant toujours l'anchor preset sur 'middle center' et en ajoutant un composant horizontal ou vertical layout group sur le parent afin d'aligner les enfants comme dans un tableau.
Le problème vient sans doute du fait que tu fais ta copie dans un parent différent.
Ne pas faire la copie par copié/collé (ctrl+c, ctrl+v), normalement par duplication (ctrl+d) ou par script cela fonctionne.
je note l'effort d'explications mais j'ai rien compris!
Par défaut, les éléments UI ont un anchors preset se redimensionnant au parent par rapport à ses ancres.
Pour une 'taille' fixe, il faut cliquer sur le carré en haut à gauche d'un composant RectTransform puis cliquer au milieu sur 'middle center'.
Ceci rend la taille absolu et non plus relative mais aussi la position. Il faudra donc après copie repositionner l’élément et au besoin re-régler ses ancres.
Il est possible d'avoir une taille absolu et un positionnement relatif en mettant toujours l'anchor preset sur 'middle center' et en ajoutant un composant horizontal ou vertical layout group sur le parent afin d'aligner les enfants comme dans un tableau.
Le problème vient sans doute du fait que tu fais ta copie dans un parent différent.
Ne pas faire la copie par copié/collé (ctrl+c, ctrl+v), normalement par duplication (ctrl+d) ou par script cela fonctionne.
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)
(merci bien à ceux qui passent mettre des étoiles ! ^^)
-
- Messages : 30
- Inscription : 23 Déc 2016 15:15
Re: [DB] canvas scaler: scale with screen size, les éléments se redimensionne lorsque je les déplace
Bonjour,
Le panel gauche à ses encres tous en haut et tous en bas (top-scretch) et j'ai rajouté un vertical layout group.
J'ai mis les encres du rectangle rouge comme vous me l'avez dit en middle center, mais des que je clique sur middle center il revienne en top-left.
Le bout de code me permettant de copier un objet
Le panel gauche à ses encres tous en haut et tous en bas (top-scretch) et j'ai rajouté un vertical layout group.
J'ai mis les encres du rectangle rouge comme vous me l'avez dit en middle center, mais des que je clique sur middle center il revienne en top-left.
Le bout de code me permettant de copier un objet
Code : Tout sélectionner
public void OnBeginDrag(PointerEventData eventData)
{
Transform lePanelDeGauche = gameObject.transform.parent;
GameObject clone = Instantiate(gameObject, gameObject.transform.position, Quaternion.identity) as GameObject;
clone.name = gameObject.name;
clone.transform.SetParent(lePanelDeGauche);
Re: [DB] canvas scaler: scale with screen size, les éléments se redimensionne lorsque je les déplace
Alors pour le positionnement c'est normal. Dans le cas où un layout group se trouve sur le parent, c'est celui-ci qui gère les positions des enfants. On ne peut donc plus accéder qu'aux dimensions sur ces derniers.
Pour le code, je te propose de crée si ce n'est fait un dossier 'Resources' dans ton projet (le nom est important, c'est un fichier spécial pour Unity)
Ensuite, une fois le panel rouge configuré sur la scène, le faire glisser dans le fichier Resources (éventuellement dans Resources > UiPrefabs > monPanel ça fonctionne) pour en faire un prefab chargeable dynamiquement.
Ensuite pour le code :
Pour le code, je te propose de crée si ce n'est fait un dossier 'Resources' dans ton projet (le nom est important, c'est un fichier spécial pour Unity)
Ensuite, une fois le panel rouge configuré sur la scène, le faire glisser dans le fichier Resources (éventuellement dans Resources > UiPrefabs > monPanel ça fonctionne) pour en faire un prefab chargeable dynamiquement.
Ensuite pour le code :
Code : Tout sélectionner
// Instantiate panel.
GameObject clone = Instantiate(Resources.Load("UIPrefabs/monPanel") as GameObject, transform.position, transform.rotation);
// Assign parent.
clone.GetComponent<RectTransform>().SetParent(lePanelDeGauche.transform, false);
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)
(merci bien à ceux qui passent mettre des étoiles ! ^^)
-
- Messages : 30
- Inscription : 23 Déc 2016 15:15
Re: [DB] canvas scaler: scale with screen size, les éléments se redimensionne lorsque je les déplace
Bonjour,
Merci de votre aide.
Merci de votre aide.