Antworten auf deine Fragen:
Neues Thema erstellen

[Unity Snippets] Pagescroller für NGUI

caplac

Noch nicht viel geschrieben

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 .

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:
using UnityEngine;
using System.Collections;

/// <summary>
/// Attach this script to the container that has the objects to allow paging
/// </summary>

public class PageScrollView : MonoBehaviour {

    public float springStrength = 8.0f;
   
    private UIScrollView scrollView;
    private int elementsPerPage;
    private int currentScrolledElements;
    private Vector3 startingScrollPosition;
   
    private UIGrid grid;
   
    // Use this for initialization
    void Start ()
    {
        if (scrollView == null)
        {
            scrollView = NGUITools.FindInParents<UIScrollView>(gameObject);
            if (scrollView == null)
            {
                Debug.LogWarning(GetType() + " requires " + typeof(UIScrollView) + " object in order to work", this);
                enabled = false;
                return;
            }
           
            grid = this.GetComponent<UIGrid>();
            elementsPerPage = (int) (scrollView.panel.finalClipRegion.z / grid.cellWidth);
            currentScrolledElements = 0;
            startingScrollPosition = scrollView.panel.cachedTransform.localPosition;
        }   
    }
   
    // Update is called once per frame
    void Update () {
       
    }
   
   
    /// <summary>
    /// Scrolls until target position matches target panelAnchorPosition (may be the center of the panel, one of its sides, etc)
    /// </summary>   
    void MoveBy (Vector3 target)
    {
        if (scrollView != null && scrollView.panel != null)
        {
            // Spring the panel to this calculated position
            SpringPanel.Begin(scrollView.panel.cachedGameObject, startingScrollPosition - target, springStrength);
        }
    }
   
   
    public void NextPage()
    {
        if (scrollView != null && scrollView.panel != null)
        {
            currentScrolledElements += elementsPerPage;
            if (currentScrolledElements > (this.transform.childCount - elementsPerPage))
            {
                currentScrolledElements = (this.transform.childCount - elementsPerPage);
            }
            float nextScroll = grid.cellWidth * currentScrolledElements;
            Vector3 target = new Vector3(nextScroll, 0.0f, 0.0f);               
            MoveBy(target);
        }
    }
   
    public void PreviousPage()
    {
        if (scrollView != null && scrollView.panel != null)
        {
            currentScrolledElements -= elementsPerPage;
            if (currentScrolledElements < 0)
            {
                currentScrolledElements = 0;
            }
            float nextScroll = grid.cellWidth * currentScrolledElements;
            Vector3 target = new Vector3(nextScroll, 0.0f, 0.0f);               
            MoveBy(target);
        }
    }
}

Viel Spass damit und ein fröhliches Daddeln.
 

Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.619
Beiträge
1.538.363
Mitglieder
67.540
Neuestes Mitglied
Alex Weidner
Oben