Jump to content
Unity Insider Forum
Kojote

Dropdown Auswahl Abstand

Recommended Posts

Hi!

Mal ne Frage, wie ändere ich im Dropdown den Abstand der einzelnen Elemente zueinander? Finde da leider nichts, kann nur die Textgröße beeinflussen und so siehts unmöglich aus:

ZkAz0BHl.jpg

Grüße von Kojote

Share this post


Link to post
Share on other sites

Ich glaube, ein Dropdown benutzt eine Vertical Layout Group für die innere Liste, oder?

Die musst du nur raussuchen und da den Wert vom Padding ändern.

Share this post


Link to post
Share on other sites

Jop du hast Recht, es fehlt eine Vertical Layout Gruppe. Problem ist, die Liste wird zur Laufzeit erstellt. Kann man da was machen?

Share this post


Link to post
Share on other sites

Wird sie zur Laufzeit befüllt oder existiert die Komponente tatsächlich nicht?

Wenn die Komponente wirklich noch nicht existiert, dann musst du sie dir halt raussuchen und zur Laufzeit abändern. Wenn du an die Stelle des Codes herankommst, an der die Komponente erstellt wird, dann kannst du dich da einklinken. Wenn nicht, wird's natürlich kniffliger.

Ehrlich gesagt sieht es Unity aber gar nicht ähnlich, dass da zur Laufzeit Komponenten erstellt werden...

Share this post


Link to post
Share on other sites

Ja, wird zur Laufzeit erstellt, was die Sache knifflig macht. Das ist aber weniger Unitys Schuld, als dem Script geschuldet, welches ich nutze.

Hier mal ein Ausschnitt für Resolution:

        void OnEnable() {
            startTimer = Time.time + 0.5f;
            updateParameter();
        }

        public void updateParameter() {
            fpsToggle.isOn = LD_SP_System_Settings.Instance.GetVideoSettings().fps;

            fullscreenToggle.isOn = Screen.fullScreen;
            List<TMP_Dropdown.OptionData> Options2 = new List<TMP_Dropdown.OptionData>();

            resolutionsAll = Screen.resolutions;
            resolutionSelect.ClearOptions();
            resolutions.Clear();
            var m = 0;
            int k = 0;
            List<string> resol = new List<string>();
            foreach (Resolution res in resolutionsAll) {
                if (!resol.Contains(res.width + "x" + res.height)) {
                    resol.Add(res.width + "x" + res.height);
                    resolutions.Add(res);
                    Options2.Add(new TMP_Dropdown.OptionData(res.width + "x" + res.height));
                    if (Screen.width == res.width && Screen.height == res.height) {
                        k = m;
                    }
                    m++;
                }
            }
        }

 

Share this post


Link to post
Share on other sites

Das ist ja nur das Befüllen der Liste, nicht das Erstellen einer Komponente, die die Elemente anzeigt.

Share this post


Link to post
Share on other sites

Ich dachte das wird über den New Operator mit der Liste gemacht. 🤔

Wie macht er das dann?

Ist es das hier:

                Options2.Add(new TMP_Dropdown.OptionData("Disable"));
                Options2.Add(new TMP_Dropdown.OptionData("HardOnly"));
                Options2.Add(new TMP_Dropdown.OptionData("All"));

 

Share this post


Link to post
Share on other sites

Ich kenne mich mit der TextMesh version nicht aus (und da es TM ist liegt der Fehler wahrscheinlich nicht an Unity), aber der normale Dropdown Element hat ein GameObject drinne welches sich Template nennt. Den kann man es bearbeiten. Zu den Abständen zwischen den Items gibt es keine Layouteinstellungen. Irgendwie wird das von selbst berechnet. Wenn ich also dein Bild anschaue liegt es wahrscheinlich an den Items. Deren Recttramsform größe ist irgendwie falsch.

Denke mal bei TM ist das so ähnlich.

Edıt hab mır mal TM Dropdown angeschaut. Tatsächlich ist das bei mir auch verbuggt. Der Text war bei mir übelst groß und daher nicht richtig lesbar. Wenn man das per Hand korrigiert, wird es normal.

Share this post


Link to post
Share on other sites

OCv8bSS.png

XaMWspE.png

Man sieht beim zweiten Bild schlecht, aber da ist ein gelber Rechteck, wo man bestimmt, wie weit der Text gehen darf. Den hab ich bei mir angepasst. Der gelbe Rechteck gibt es standardmäßig bei TM

  • Thanks 1

Share this post


Link to post
Share on other sites

Wenn TMPro den Standards von Unity folgt (weiß ich gerade nicht), dann müsste auf dem "Content"-Objekt eine Komponente sitzen, die sich um das Layouting der Elemente als Liste kümmert.

Share this post


Link to post
Share on other sites

Das einzige was er dann bei mir macht, wenn ich den gelben Rahmen ändere ist das:

tgDq2bEE.jpg

Rießen Abstand oben, der gerade noch gleichmäßig im Label oben und unten war.

Was mir gerade wieder einfällt, dass selbe Problem hatte ich letztes Jahr schon mal bei einem Projekt. Im Endeffekt hab ich die TMP_Dropdown ausgebaut und das normale Dropdown wieder eingebaut. Also wenn ich net bald ne Lösung finde, wird das wohl die Lösung werden.

EDIT: Das blöde ist, was ich gerade merke, dass würde wieder zu nem Chaos in den Scripten führen, weil einiges im Script auf TMP Komponenten zugreift, also zerreis ich mehrere Scripte wegen paar Pixeln. Aber muss doch ne Lösung geben.^^

Share this post


Link to post
Share on other sites

Du muss mal gucken, ob halt an den gelben Rectangle liegt oder an den Unity Recttansform. Musst mal halt da rumspielen denke ich mal.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...