void InitFindTable() { if (_chars == null || _chars.Length == 0) { _chars = new int[chars.Length]; for (int i = 0, e = chars.Length; i < e; i++) { FontChar ch = chars[i]; _chars[i] = chars[i].id; } } }
void updateText(string text) { if (font == null || !enabled || renderMode == null || !gameObject.active) { return; } float offsetX = 0f; float offsetY = 0f; char lastChar = (char)0; base.Clear(); if (text.Length == 0) { return; } __colorLT = _colorLT; __colorRT = _colorRT; __colorLB = _colorLB; __colorRB = _colorRB; base.Resize(text.Length * 2); textSpriteTransforms.Clear(); int e = text.Length; for (int i = 0; i < e; i++) { char c = text[i]; if (textArea && (c == '\n') || (c == '\r')) { alignText(offsetX); offsetX = 0; offsetY -= font.common.lineHeight; } if (textArea && offsetY < -textAreaSize.y) { break; } FontChar fontChar = font.GetChar(c); if (fontChar == null) { continue; } int k = font.GetKerning(lastChar, c); if (textArea && (((offsetX + fontChar.xOffset + k) >= textAreaSize.x))) { alignText(offsetX); offsetX = 0; offsetY -= font.common.lineHeight; } int idx = AttachSprite(fontChar.sprite); SpriteTransform tran = GetSpriteTransform(idx); textSpriteTransforms.Add(tran); tran.position = new Vector2(offsetX + fontChar.xOffset + k, offsetY - fontChar.yOffset); tran.layer = (e - i) & 0xf; offsetX += fontChar.xAdvance; lastChar = c; } alignText(offsetX); if (updateMode == SpriteRendererUpdateMode.None) { Apply(); } }