Unity Text 實現文字上下標功能

2021-10-12 13:04:13 字數 4529 閱讀 6742

可修改上下標顏色以及大小

說明:

**:

using system.collections.generic;

using system.text;

using system.text.regularexpressions;

using unityengine;

using unityengine.ui;

namespace ltyframework.ui

)(\|([0-9]))?(\|([0-9a-za-z]+))?=(.+?)\]"

;private

static

readonly

regex m_regex =

newregex

(m_regextag, regexoptions.singleline)

;///

/// 文字轉換

///

private

static

readonly

stringbuilder m_textbuilder =

newstringbuilder()

;///

/// 頂點列表

///

private

readonly uivertex[

] m_tempverts =

newuivertex[4

];///

/// 輸出文字

///

private

string m_outputtext;

///

/// 字元寬度

///

public

float charwidth

///

/// 字元高度

///

public

float charheight

///

/// 角標資料

///

private list m_cornerboxinfos =

newlist

<

cornerinfo

>()

;///

/// 角標高度偏移值

///

[range(-

1,1)

]public

float heightoffset =

0.08f

;public

override

void

setverticesdirty()

protected

override

void

onpopulatemesh

(vertexhelper tofill)

vector2 roundingoffset =

newvector2

(verts[0]

.position.x, verts[0]

.position.y)

* unitsperpixel;

roundingoffset =

pixeladjustpoint

(roundingoffset)

- roundingoffset;

tofill.

clear()

; list _vertsposlist =

newlist

<

vector3

>()

;if(roundingoffset != vector2.zero)

}else

}drawcornerscript

(tofill, m_cornerboxinfos);}

private

string

getoutputtext()

string _color =

string

.empty;

if(match.groups[5]

.success)

_color = match.groups[5]

.value;

color _contentcolor =

getcolor

(_color, color)

;string color1 =

getcolor

(_contentcolor)

;string _content = match.groups[6]

.value;

m_textbuilder.

(inputtext.

substring

(unmatchindex, match.index - unmatchindex));

int _startindex = m_textbuilder.length *4;

m_textbuilder.(")

; m_textbuilder.

(color1)

; m_textbuilder.

(">");

m_textbuilder.(")

; m_textbuilder.

(mathf.

floortoint

(_fontsize /2f)

);m_textbuilder.

(">");

if(usesquarebrackets)

m_textbuilder.

("[");

m_textbuilder.

(_content);if

(usesquarebrackets)

m_textbuilder.

("]");

m_textbuilder.(""

);m_textbuilder.(""

);int _endindex = m_textbuilder.length *4;

cornerinfo cornerinfo =

newcornerinfo()

; m_cornerboxinfos.

add(cornerinfo)

; unmatchindex = match.index + match.length;

} m_textbuilder.

(inputtext.

substring

(unmatchindex, inputtext.length - unmatchindex));

return m_textbuilder.

tostring()

;}///

/// 畫角標

///

///

private

void

drawcornerscript

<

t>

(vertexhelper tofill, list boxinfo)

where t : cornerinfo

}break

;case

"2":

//下標

case

"4":

default

:break;}

} tofill.

clear()

; tofill.

adduivertex********stream

(vertexs);}

#region 輔助功能

///

/// 獲取顏色

///

/// 16進製制字元/顏色

///

///

private

color

getcolor

(string color,

color originalcolor)

", color)

; isdefined = colorutility.

tryparsehtmlstring

(color,

out _newcolor);if

(!isdefined)

_newcolor =

base

.color;}}

return _newcolor;

}///

/// 獲取16進製制顏色

///

///

///

private

string

getcolor

(color color)

private

class

cornerinfo

#endregion}}

示例:

文字上下輪播

之前也寫過兩篇程式猿生涯的文章.後面都給刪掉了 一直想重新寫起來 把一些碼 遇到的一些坑給記下來,一直忘記,也一直拖著,拖延症越來越嚴重了.回到主題吧.最近做專案 遇到乙個小效果.對的 只是乙個小效果而已 就是文字上下輪播 一樣.但是基本可以解決需求.現學現用.問題也可以解決但是並不知道這個東西是怎...

文字上下滾動

效果圖 無間隙文字向上滾動1a li href 無間隙文字向上滾動2a li href 無間隙文字向上滾動3a li href 無間隙文字向上滾動4a li href 無間隙文字向上滾動5a li href 無間隙文字向上滾動6a li href 無間隙文字向上滾動7a li ul div div ...

div內容文字上下滾動

上就是滑鼠滾動 滑鼠移動到箭頭然後文字上下或者左右移動hhhhhhhhhhhhhhh 就是滑鼠滾動 滑鼠移動到箭頭然後文字上下或者左右移動 就是滑鼠滾動 滑鼠移動到箭頭然後文字上下或者左右移動 就是滑鼠滾動 滑鼠移動到箭頭然後文字上下或者左右移動 就是滑鼠滾動 滑鼠移動到箭頭然後文字上下或者左右移動...