Jump to content
Unity Insider Forum
Kokujou

Unity UI - derber Anzeigefehler!

Recommended Posts

Ich weiß nicht wie ich dieses widersinnige Phänomen anders bezeichnen kann.

Ich benutze nicht die Scripting UI, das vorweg. Ich baue sie zusammen, instanziiere sie und setze im Skript alles wie folgt:

if (!shownYaku)
                        {
                            shownYaku = true;
                            GameObject yaku = Instantiate(Resources.Load<GameObject>("Prefabs/FixedYaku"));
                            yaku.name = main.newYaku[0].Name;
                            GameObject.Find(main.newYaku[0].Name + "/Title/Shadow").GetComponent<Text>().text = main.newYaku[0].JName;
                            GameObject.Find(main.newYaku[0].Name + "/Title/Text").GetComponent<Text>().text = main.newYaku[0].JName;
                            GameObject.Find(main.newYaku[0].Name + "/Subtitle/Shadow").GetComponent<Text>().text = main.newYaku[0].Name;
                            GameObject.Find(main.newYaku[0].Name + "/Subtitle/Text").GetComponent<Text>().text = main.newYaku[0].Name;
                            List<Card> temp = new List<Card>();
                            if (main.newYaku[0].Mask[1] == 1)
                                temp.AddRange(((Player)main.Board.players[0]).CollectedCards.FindAll(x => main.newYaku[0].Namen.Contains(x.Name)));
                            if (main.newYaku[0].Mask[0] == 1)
                                temp.AddRange((((Player)main.Board.players[0]).CollectedCards.FindAll(x => x.Typ == main.newYaku[0].TypPref)));
                            Transform parent = GameObject.Find(main.newYaku[0].Name + "/Cards").transform;
                            for (int i = 0; i < main.newYaku[0].minSize; i++)
                            {
                                GameObject card = new GameObject(i.ToString());
                                card.transform.parent = parent;
                                RectTransform rect = card.AddComponent<RectTransform>();
                                rect.localPosition = new Vector3((main.newYaku[0].minSize / 2f) * -42 + 42 * i + 21, 0);
                                rect.sizeDelta = new Vector2(40, 64);
                                GameObject shadow = new GameObject("Shadow");
                                shadow.transform.parent = card.transform;
                                shadow.AddComponent<Image>().color = new Color(0, 0, 0);
                                rect = shadow.GetComponent<RectTransform>();
                                rect.localPosition = new Vector3(3, -3);
                                rect.sizeDelta = new Vector2(40, 64);
                                GameObject Image = new GameObject("Image");
                                Image.transform.parent = card.transform;
                                Image img = Image.AddComponent<Image>();
                                Texture2D tex = Resources.Load<Texture2D>("Motive/" + temp[i].Name);
                                img.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(.5f, .5f));
                                rect = img.GetComponent<RectTransform>();
                                rect.localPosition = new Vector3(0, 0);
                                rect.sizeDelta = new Vector2(40, 64);

                            }
                        }

Und jetzt der totale Schock: Der Text unter Titel wird nicht angezeigt, der unter Subtitle aber schon. selbst wenn ich auf Pause drücke und alles genauso mache wie beim Subtitle wird das Element einfach nicht angezeigt. Ich weiß nicht mehr weiter und bin völlig überfragt.

 

Share this post


Link to post
Share on other sites

Hast du geprüft, ob das Prefab evtl. irgend eine kuriose Einstellung hat?
Liegen die Objekte denn zumindest im SceneView korrekt?
Stimmt die Reihenfolge in der Hirarchie?
 

Share this post


Link to post
Share on other sites

Der einfachste Grund, wieso ein Text nicht angezeigt wird ist, dass die Textbox für den aktuellen Text zu klein ist. Ziehe diesen mal zur Laufzeit größer und schaue, ob dein Text dann sichtbar ist. :) Wenn ja, musst Du die Laufzeitskalierung anpassen oder in der Text Component zum Testen mal Best Fit anhaken. Ein Prefab kann beim Instanzieren / Hinzufügen zu einem Canvas dennoch manchmal seine Eigenheiten haben.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×