Anzeige

[Unity Snippets] Pagescroller für NGUI

[Unity Snippets] Pagescroller für NGUI | PSD-Tutorials.de

Erstellt von caplac, 13.08.2015.

  1. caplac

    caplac Noch nicht viel geschrieben

    Dabei seit:
    11.01.2012
    Beiträge:
    23
    Geschlecht:
    männlich
    [Unity Snippets] Pagescroller für NGUI
    Hallo an alle,
    habe dieses neue Forum entdeckt. Find ich super das hier jetzt auch mein Bereich abgedeckt wird, werde versuchen mein Beitrag zu leisten.

    Vor drei Jahren haben ein Kollege und ich ein kleines Projekt namens Tomajan Games&Apps gegründet. Wir sehen uns selbst als Indie Entwickler mit Schwerpunkt auf Android Geräte. Unsere bevorzugte Software ist hierbei Unity3d. Als Zusatz um Unity mit Material zu versorgen verwenden wir Blender und Photoshop. Wir besitzen mittlerweile ein kleines Portfolio im Playstore wer mal vorbeischauen möchte hier gehts zum Playstore.

    Nun zu meinem kleinen Snippet mit NGUI ein Pagescroller erstellen. Zuerst der Aufbau in der Hierarchy mit NGUI und einer 2DUI.

    -UIRoot
    --Cam ..

    --Next Btn (Component angehängt werden müssen: Collider, ButtonScript, EventTrigger (hier bei OnClick das Grid mit dem PageScrollView.cs ablegen und NextPage auswählen. Sollte ausserhalb der Scrollview liegen.)
    --Previous Btn (Component angehängt werden müssen: Collider, ButtonScript, EventTrigger (hier bei OnClick das Grid mit dem PageScrollView.cs ablegen und PreviousPage auswählen.Sollte ausserhalb der Scrollview liegen.)

    --ScrollView (hier passe breite und Höhe an ist der Schlüsselpunkt für die Grösse des Fenster und der Page die gescrollt wird)
    ---Grid (Child von der Scrollview, Grösse gleich der ScrollView, hier wird das Script PageScrollView.cs angehängt)
    ----Page Container 1 (hier kannst du eine einzele Seite aufbauen alles als Child des Containers anlegen)
    ----Page Container 2 (hier kannst du eine einzele Seite aufbauen alles als Child des Containers anlegen)
    ----Page Container 3 (hier kannst du eine einzele Seite aufbauen alles als Child des Containers anlegen)
    ----Page Container 4 (hier kannst du eine einzele Seite aufbauen alles als Child des Containers anlegen)
    kann erweitert werden um so viele Pages benötigt werden.

    Nun noch die Magie das Script.

    Code (Text):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. /// <summary>
    5. /// Attach this script to the container that has the objects to allow paging
    6. /// </summary>
    7.  
    8. public class PageScrollView : MonoBehaviour {
    9.  
    10.     public float springStrength = 8.0f;
    11.    
    12.     private UIScrollView scrollView;
    13.     private int elementsPerPage;
    14.     private int currentScrolledElements;
    15.     private Vector3 startingScrollPosition;
    16.    
    17.     private UIGrid grid;
    18.    
    19.     // Use this for initialization
    20.     void Start ()
    21.     {
    22.         if (scrollView == null)
    23.         {
    24.             scrollView = NGUITools.FindInParents<UIScrollView>(gameObject);
    25.             if (scrollView == null)
    26.             {
    27.                 Debug.LogWarning(GetType() + " requires " + typeof(UIScrollView) + " object in order to work", this);
    28.                 enabled = false;
    29.                 return;
    30.             }
    31.            
    32.             grid = this.GetComponent<UIGrid>();
    33.             elementsPerPage = (int) (scrollView.panel.finalClipRegion.z / grid.cellWidth);
    34.             currentScrolledElements = 0;
    35.             startingScrollPosition = scrollView.panel.cachedTransform.localPosition;
    36.         }  
    37.     }
    38.    
    39.     // Update is called once per frame
    40.     void Update () {
    41.        
    42.     }
    43.    
    44.    
    45.     /// <summary>
    46.     /// Scrolls until target position matches target panelAnchorPosition (may be the center of the panel, one of its sides, etc)
    47.     /// </summary>  
    48.     void MoveBy (Vector3 target)
    49.     {
    50.         if (scrollView != null && scrollView.panel != null)
    51.         {
    52.             // Spring the panel to this calculated position
    53.             SpringPanel.Begin(scrollView.panel.cachedGameObject, startingScrollPosition - target, springStrength);
    54.         }
    55.     }
    56.    
    57.    
    58.     public void NextPage()
    59.     {
    60.         if (scrollView != null && scrollView.panel != null)
    61.         {
    62.             currentScrolledElements += elementsPerPage;
    63.             if (currentScrolledElements > (this.transform.childCount - elementsPerPage))
    64.             {
    65.                 currentScrolledElements = (this.transform.childCount - elementsPerPage);
    66.             }
    67.             float nextScroll = grid.cellWidth * currentScrolledElements;
    68.             Vector3 target = new Vector3(nextScroll, 0.0f, 0.0f);              
    69.             MoveBy(target);
    70.         }
    71.     }
    72.    
    73.     public void PreviousPage()
    74.     {
    75.         if (scrollView != null && scrollView.panel != null)
    76.         {
    77.             currentScrolledElements -= elementsPerPage;
    78.             if (currentScrolledElements < 0)
    79.             {
    80.                 currentScrolledElements = 0;
    81.             }
    82.             float nextScroll = grid.cellWidth * currentScrolledElements;
    83.             Vector3 target = new Vector3(nextScroll, 0.0f, 0.0f);              
    84.             MoveBy(target);
    85.         }
    86.     }
    87. }
    Viel Spass damit und ein fröhliches Daddeln.
     
    #1      
    dn3d_fanboy gefällt das.
Seobility SEO Tool
x
×
×