public void PushIcon(HUDTilteType titleType, int nSpriteID) { HudTitleAttribute titleAttrib = HudSetting.Instance.TitleSets[(int)titleType].GetTitle(0); UISpriteInfo sp = CAtlasMng.instance.GetSafeSpriteByID(nSpriteID); int nWidth = 0; int nHeight = 0; int nStart = m_aSprite.size; if (sp != null) { nWidth = (int)sp.outer.width; nHeight = (int)sp.outer.height; PushSprite(nSpriteID, nWidth, nHeight, 0.0f, titleAttrib.SpriteOffsetY); } if (m_TitleLine[m_nTitleNumb] == null) { m_TitleLine[m_nTitleNumb] = new HUDTilteLine(); } m_TitleLine[m_nTitleNumb].m_nType = titleType; m_TitleLine[m_nTitleNumb].m_fWidth = nWidth; m_TitleLine[m_nTitleNumb].m_nHeight = nHeight; m_TitleLine[m_nTitleNumb].m_nStart = nStart; m_TitleLine[m_nTitleNumb].m_nEnd = m_aSprite.size; m_TitleLine[m_nTitleNumb].m_szText = string.Empty; m_TitleLine[m_nTitleNumb].m_nColorIndex = 0; m_TitleLine[m_nTitleNumb].m_nLine = m_nLines; m_TitleLine[m_nTitleNumb].m_nSpriteID = nSpriteID; if (titleAttrib.AlignType == HUDAlignType.align_center) { m_fCurLineWidth = nWidth; } nHeight += titleAttrib.SpriteReduceHeight; if (nHeight < titleAttrib.LockMaxHeight && titleAttrib.LockMaxHeight > 0) { nHeight = titleAttrib.LockMaxHeight; } if (m_fCurLineHeight < nHeight) { m_fCurLineHeight = nHeight; } ++m_nTitleNumb; }
// 必须先有居中的 public void PushTitle(string szText, HUDTilteType titleType, int nColorIndex) { if (m_nTitleNumb >= m_TitleLine.Length) { return; } UIFont mFont = GetHUDTitleFont(); CharacterInfo tempCharInfo = new CharacterInfo(); HudTitleAttribute titleAttrib = HudSetting.Instance.TitleSets[(int)titleType].GetTitle(nColorIndex); int nLineGap = titleAttrib.LineGap; int nCharGap = titleAttrib.CharGap; HUDTextParse hudParse = HUDTextParse.Instance; hudParse.ParseText(szText); mFont.PrepareQueryText(hudParse.m_szText); HudTitleAttribute.Effect nStyle = titleAttrib.Style; int nSpriteCount = hudParse.m_SpriteCount; HUDCharInfo[] Sprites = hudParse.m_Sprites; char ch; float fShadowX = titleAttrib.OffsetX; float fShadowY = titleAttrib.OffsetY; float fx = 0.0f; Color32 clrLeftUp = titleAttrib.clrLeftUp; Color32 clrLeftDown = titleAttrib.clrLeftDown; Color32 clrRightUp = titleAttrib.clrRightUp; Color32 clrRightDown = titleAttrib.clrRightDown; Color32 clrShadow = titleAttrib.clrShadow; Color32 clrCustom; int nStart = m_aSprite.size; int nHeight = mFont.GetFontHeight(); int nFontH = titleAttrib.Height; int nFontOffsetY = titleAttrib.FontOffsetY; int nY = 0; for (int i = 0; i < nSpriteCount; ++i) { if (Sprites[i].bChar) { ch = Sprites[i].ch; mFont.GetCharacterInfo(ch, ref tempCharInfo); nY = (tempCharInfo.glyphHeight - nFontH) / 2 + nFontOffsetY; if (nStyle != HudTitleAttribute.Effect.None) { PushShadow(ref tempCharInfo, ch, fx, nY, clrShadow, fShadowX, fShadowY); if (nStyle == HudTitleAttribute.Effect.Outline) { PushShadow(ref tempCharInfo, ch, fx, nY, clrShadow, fShadowX, -fShadowY); PushShadow(ref tempCharInfo, ch, fx, nY, clrShadow, -fShadowX, fShadowY); PushShadow(ref tempCharInfo, ch, fx, nY, clrShadow, -fShadowX, -fShadowY); } } if (Sprites[i].bCustomColor) { clrCustom = Sprites[i].CustomColor; HUDVertex node = PushChar(ref tempCharInfo, ch, fx, nY, clrCustom, clrCustom, clrCustom, clrCustom); fx += node.width + nCharGap; } else { HUDVertex node = PushChar(ref tempCharInfo, ch, fx, nY, clrLeftUp, clrLeftDown, clrRightUp, clrRightDown); fx += node.width + nCharGap; } } else { // 图片 if (Sprites[i].CharType == UIFontUnitType.UnitType_Icon) { HUDVertex node = PushSprite(Sprites[i].SpriteID, Sprites[i].SpriteWidth, Sprites[i].SpriteHeight, fx, titleAttrib.SpriteOffsetY); fx += node.width + nCharGap; if (nHeight < node.height - titleAttrib.SpriteReduceHeight) { nHeight = node.height - titleAttrib.SpriteReduceHeight; } } } } if (m_TitleLine[m_nTitleNumb] == null) { m_TitleLine[m_nTitleNumb] = new HUDTilteLine(); } m_TitleLine[m_nTitleNumb].m_nType = titleType; m_TitleLine[m_nTitleNumb].m_fWidth = fx - nCharGap; m_TitleLine[m_nTitleNumb].m_nHeight = nHeight; m_TitleLine[m_nTitleNumb].m_nStart = nStart; m_TitleLine[m_nTitleNumb].m_nEnd = m_aSprite.size; m_TitleLine[m_nTitleNumb].m_szText = szText; m_TitleLine[m_nTitleNumb].m_szValidText = hudParse.m_szText; m_TitleLine[m_nTitleNumb].m_nColorIndex = nColorIndex; m_TitleLine[m_nTitleNumb].m_nLine = m_nLines; m_TitleLine[m_nTitleNumb].m_nSpriteID = 0; if (titleAttrib.AlignType == HUDAlignType.align_center) { m_fCurLineWidth = fx - nCharGap; } if (nHeight < titleAttrib.LockMaxHeight && titleAttrib.LockMaxHeight > 0) { nHeight = titleAttrib.LockMaxHeight; } if (m_fCurLineHeight < nHeight) { m_fCurLineHeight = nHeight; } ++m_nTitleNumb; }