当前位置:网站首页>Liste des boucles de l'interface graphique de défaillance

Liste des boucles de l'interface graphique de défaillance

2022-07-06 12:45:00 Sq Liu

FairyGUIListe des cycles

Obtenir des résultats:InUnityMoyenne,La souris vous permet de parcourir la liste,Et lors de la navigation sur la page courante,Il y a un effet presque grand, loin et petit.

Insérer la description de l'image ici

Un.、Importer des ressources

Insérer la description de l'image ici
Insérer la description de l'image ici

Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici

2.、Nouveau bouton

Insérer la description de l'image ici

Trois、 Liste des dessins

Insérer la description de l'image ici
Insérer la description de l'image ici

Quatre、 Chargeur charger dynamiquement le bouton Image

 S'il y a des dizaines de milliers de boutons , Nous ne pouvons pas créer un par un ,C'est le moment deUnity Charger dynamiquement les ressources du bouton Image dans , Par conséquent, le chargeur est introduit .

La taille du bouton est 248×378, Alors le chargeur devrait être 248×378. Et les placer dans 0,0.
Insérer la description de l'image ici
Insérer la description de l'image ici
Retour à la Liste , Ajouter quelques objets supplémentaires .
Insérer la description de l'image ici

Cinq、Packaging Publishing

Insérer la description de l'image ici
Insérer la description de l'image ici

Six、UnityAffichage en

Insérer la description de l'image ici
Insérer la description de l'image ici

Sept、Écrire le Code

Insérer la description de l'image ici

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class LoopList : MonoBehaviour
{
    
    private GComponent mainUI;
    private GList list;
    void Start()
    {
    
        mainUI = GetComponent<UIPanel>().ui;
        list = mainUI.GetChild("n0").asList;  //n0- Oui.FairyGUIListe dans
        list.SetVirtualAndLoop();  // Définir la liste comme une liste virtuelle (FGUILe règlement: Si vous utilisez une liste , La liste virtuelle doit être utilisée )
        list.itemRenderer = RenderListItem;  //Appelezlist Fonctions de rendu à l'intérieur , C'est une variable de type délégué , Il faut donc lui attribuer une valeur. 
        list.numItems = 5;  // Définir la longueur de la Liste 
    }
    
    private void RenderListItem(int index, GObject obj)
    {
    
        GButton button = obj.asButton;
        button.icon = UIPackage.GetItemURL("LoopList", "n" + (index + 1));  //Acquisition dynamiqueURL
    }
}

Exécution de la compilation,RetourUnityErreur détectée.C'est vrai.FairyGUI J'ai oublié de faire glisser les ressources du projet , Faites glisser manuellement .
Insérer la description de l'image ici
Insérer la description de l'image ici
Republier à nouveau
Insérer la description de l'image ici
En ce moment,RetourUnity,Les résultats sont les suivants.Découverte“Chapitre II”、“Chapitre III” Toutes les photos en bas “Chapitre I” Image en bas .Pour quelle raison?Parce qu'avant, on étaitFairyGUIC'est parti.Button1Un rendu,Apparemment, ce n'est pas possible. Donc nous allons rendre l'image elle - même pour l'effacer .Directement à traversicon Oui, il suffit de le charger. .
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Il y a un autre endroit ,TrouverLoopListListe, Réglez son traitement de débordement à “Défilement horizontal”.
Insérer la description de l'image ici
Release again,Tout va bien.

Huit、Effets de fonctionnement

Insérer la description de l'image ici

Neuf、Amélioration—— Effets spéciaux proches, lointains et petits

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class LoopList : MonoBehaviour
{
    
    private GComponent mainUI;
    private GList list;
    void Start()
    {
    
        mainUI = GetComponent<UIPanel>().ui;
        list = mainUI.GetChild("n0").asList;  //n0- Oui.FairyGUIListe dans
        list.SetVirtualAndLoop();  // Définir la liste comme une liste virtuelle (FGUILe règlement: Si vous utilisez une liste , La liste virtuelle doit être utilisée )
        list.itemRenderer = RenderListItem;  //Appelezlist Fonctions de rendu à l'intérieur , C'est une variable de type délégué , Il faut donc lui attribuer une valeur. 
        list.numItems = 5;

        list.scrollPane.onScroll.Add(DoSpecialEffect);
        DoSpecialEffect();
    }

    private void DoSpecialEffect()
    {
    
        float listCenter = list.scrollPane.posX + list.viewWidth / 2;
        //scrollPane Est la largeur de la liste actuelle ;viewWidth Est la largeur de la liste elle - même 
        for (int i = 0; i < list.numChildren; i++)  //numChildren Est l'objet actuellement rendu ,C'est - à - dire l'exécutionGame Nombre visible 
        {
    
            GObject item = list.GetChildAt(i);
            float itemCenter = item.x + item.width / 2;
            float itemWidth = item.width;
            float distance = Mathf.Abs(listCenter - itemCenter);
            if (distance < itemWidth)
            {
    
                float distanceRange = 1 + (1 - distance / itemWidth) * 0.2f;
                item.SetScale(distanceRange, distanceRange);
            }
            else
            {
    
                item.SetScale(1, 1);
            }
        }
    }
    private void RenderListItem(int index, GObject obj)
    {
    
        GButton button = obj.asButton;
        button.SetPivot(0.5f, 0.5f);  // Placer l'ancre au Centre 
        button.icon = UIPackage.GetItemURL("LoopList", "n" + (index + 1));  //Acquisition dynamiqueURL
    }
}

Insérer la description de l'image ici
Associer la liste et les boutons au conteneur
Insérer la description de l'image ici

Insérer la description de l'image ici
Après publication Unity Il n'y a pas de problème. .

Dix、 Image finale parfaite

Insérer la description de l'image ici

原网站

版权声明
本文为[Sq Liu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060913597565.html