// Update is called once per frame void Update() { if (add_characters) { add_characters = false; font.TryAddCharacters("我是个好人,还不行吗"); } if (clear_font) { clear_font = false; font.ClearFontAssetData(); } }
private void ResetFontAssetData(TMP_FontAsset font) { Dictionary <uint, int> charRefDictionary; if (!m_FontCharacterLookupDictionary.TryGetValue(font, out charRefDictionary)) { return; } m_CharTryAddCharacters.Clear(); foreach (var kv in charRefDictionary) { m_CharTryAddCharacters.Add((char)kv.Key); } HashSet <char> nonexistentCharacters; if (!m_CharNonexistentCharacters.TryGetValue(font, out nonexistentCharacters)) { nonexistentCharacters = new HashSet <char>(); m_CharNonexistentCharacters.Add(font, nonexistentCharacters); } // 重设的话,要把所有用到的文本组件刷一下,不然会有残留影像 font.ClearFontAssetData(); m_CharMissingCharacters.Clear(); bool ret = font.TryAddCharacters(m_CharTryAddCharacters, m_CharMissingCharacters); MissingCharactersToNonexistent(font, nonexistentCharacters, charRefDictionary); foreach (var kv in m_TextOldCharacterDictionary) { if (kv.Key) { kv.Key.SetVerticesDirty(); } } }