Jump to content
Unity Insider Forum

Rect steuern


Kojote

Recommended Posts

Grüße!

Ich hab ein kleines Script zum steuern eines Scrollrects geschrieben, insgesamt 4 Buttons. 2 Buttons zum Scrollen, 2 Button um an den Anfang und an das Ende des Rects zu springen.

Hier mal das Script:

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

    public class LD_Game_Chat_Zusatz : MonoBehaviour {

        [Header("Game Objects")]
        public GameObject[] chatTabsOverlay;

        [Header("RectTransform")]
        public RectTransform rectChatpanel;

        [Header("Button Aktualisierer")]
        public LD_Game_Button_Aktualisierer buttonChatHoch;
        public LD_Game_Button_Aktualisierer buttonChatRunter;

        [Header("Float")]
        public float chatRectScrollwert = 10f;


        private void Start() {
            chatTabsOverlay[0].SetActive(true);
        }

        private void Update() {
            // Rect scroll nach oben
            if (buttonChatHoch.isPresed == true) {
                rectChatpanel.position = new Vector3(rectChatpanel.position.x, rectChatpanel.position.y - chatRectScrollwert, rectChatpanel.position.z);
            }

            // Rect scroll nach unten
            if (buttonChatRunter.isPresed == true) {
                rectChatpanel.position = new Vector3(rectChatpanel.position.x, rectChatpanel.position.y + chatRectScrollwert, rectChatpanel.position.z);
            }
        }

        // Rect springt zum ersten Chateintrag
        public void ChatRectEnde() {
            rectChatpanel.offsetMax = new Vector2(rectChatpanel.offsetMin.x, rectChatpanel.offsetMin.y);
        }

        // Rect springt zum letzten Chateintrag
        public void ChatRectAnfang() {
            rectChatpanel.offsetMin = new Vector2(rectChatpanel.offsetMin.x, rectChatpanel.offsetMax.y);
        }

        public void ChatTabWechseln(int value) {
            for(int i = 0; i < chatTabsOverlay.Length; i++) {
                chatTabsOverlay[i].SetActive(false);
            }
            chatTabsOverlay[value].SetActive(true);
        }
    }

Problem macht diese kleine Methode:

/ Rect springt zum ersten Chateintrag
        public void ChatRectEnde() {
            rectChatpanel.offsetMax = new Vector2(rectChatpanel.offsetMin.x, rectChatpanel.offsetMin.y);
        }

"ChatRectAnfang" funktioniert ohne Probleme, warum nicht "ChatRectEnde"? Könnt ihr einen Fehler sehen?

Grüße von Kojote

Link zu diesem Kommentar
Auf anderen Seiten teilen

// Rect springt zum ersten Chateintrag
        public void ChatRectEnde() {
            rectChatpanel.offsetMax = new Vector2(rectChatpanel.//offsetMin.x, rectChatpanel.//offsetMin.y);
        }

        // Rect springt zum letzten Chateintrag
        public void ChatRectAnfang() {
            rectChatpanel.offsetMin = new Vector2(rectChatpanel.//offsetMin.x, rectChatpanel.//offsetMax.y);
        }

Ich hab damit bisher noch nicht gearbeitet aber könnte es daran liegen das du bei beiden nach dem new nur noch 1x offsetMax in einem drinne hast ?
erstezeile hat offsetMin.x und offsetMin.y aber bei ChatRectAnfang hast du offsetMin.x und offsetMax.y
Sorry falls ich jetzt komplett falsch liege ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...