Jump to content
Unity Insider Forum

Fehlerhafte Text-Darstellung - Bug oder doch Programmierfehler?


him.2013

Recommended Posts

Hi,

ich habe eine umfangreiche App programmiert und bekomme ab und zu (im Handy oder in der Windows-Version) eine fehlerhafte Darstellung einiger Text-Elemente (siehe Screenshoot).

Das Problem: Der Fehler kommt nur alle 6 Monate einmal in Unity-Editor vor. D.h. ich habe keine Möglichkeit, mit dem Unity-Editor raus zu bekommen woran es liegt. 

Der Editor hatte das letzte Mal folgenden Fehler ausgegeben:

InvalidOperationException: HashSet have been modified while it was iterated over
System.Collections.Generic.HashSet`1+Enumerator[UnityEngine.UI.Text].CheckState ()
System.Collections.Generic.HashSet`1+Enumerator[UnityEngine.UI.Text].MoveNext ()
UnityEngine.UI.FontUpdateTracker.RebuildForFont (UnityEngine.Font f) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/FontUpdateTracker.cs:40)
UnityEngine.Font.InvokeTextureRebuilt_Internal (UnityEngine.Font font) (at C:/buildslave/unity/build/artifacts/generated/bindings_old/common/TextRendering/TextRenderingBindings.gen.cs:598)
UnityEngine.UI.Text:get_preferredHeight()
MyListView:TextOptimalAnpassen(GameObject, String, String, Int32) (at Assets/Scripts/Lists/MyListView.cs:61)
ListCreator:EinDiagnoseElementErtellen(String[], Int32) (at Assets/Scripts/Lists/ListCreator.cs:286)
ListCreator:ZeigeEineGruppeVonDiagnosen(Int32, Int32, Int32, Boolean) (at Assets/Scripts/Lists/ListCreator.cs:249)
<GefundeDiagnosenEinfuegen>c__Iterator1:MoveNext() (at Assets/Scripts/Lists/ListCreator.cs:228)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
ListCreator:GetGesuchteDiagnosen() (at Assets/Scripts/Lists/ListCreator.cs:174)
UnityEngine.EventSystems.EventSystem:Update()

Der SourceCode zu dieser Stelle:

    public void TextOptimalAnpassen(GameObject gameObj, string txtText, string textName, int childNr)
    {
        Transform txtObj = gameObj.transform.GetChild(childNr);
        Text txt = txtObj.GetComponent<Text>();
        txt.text = txtText.TrimEnd();
        LayoutElement myLayoutElements = gameObj.GetComponent<LayoutElement>();
        myLayoutElements.preferredHeight = GetPreferredHeight(txt) * txt.transform.localScale.x * 2.4f - 10;
        if (myLayoutElements.preferredHeight > 100)
            myLayoutElements.preferredHeight = GetPreferredHeight(txt) * PlayerPrefs.GetFloat("tabletFactor2"); //myLayoutElements.preferredHeight -= 55;
        else if (myLayoutElements.preferredHeight > 80)
            myLayoutElements.preferredHeight -= 15;
        txt.transform.name = textName;
    }

wer kann hier weiter helfen?

vielen Dank

Hîm

S_Win_4.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...