国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

Unity UGUI控制text文字間距

2020-01-24 00:07:54
字體:
供稿:網(wǎng)友

Unity ugui相比ngui,提供的功能少之又少,好多特性得需要自己實(shí)現(xiàn)。真不知道unity寫這個(gè)插件后來是不是就沒有更新過。發(fā)了句牢騷。如果我想控制文字的顯示間距,ngui 有兩種辦法。1:文字之間加空格。2:調(diào)節(jié)spacing 的x值。

但對(duì)于ugui,第二種方法卻沒有。以前我使用ngui,這種方法用的多了,也方便,因此很想也把它這個(gè)特性轉(zhuǎn)到ugui上。

思考了半天,最終想出來了解決方法,以下是實(shí)現(xiàn)方式:

1、定義擴(kuò)展效果類

[RequireComponent(typeof(Text))]public class Spacing : BaseMeshEffect{}

2、添加行間距,列間距(Text的行間距廢掉不用了),緩存頂點(diǎn)信息

[SerializeField] private float spacing_x; [SerializeField] private float spacing_y; private List<UIVertex> mVertexList;

3、獲取相關(guān)文字的頂點(diǎn)信息數(shù)組,通過每六個(gè)定點(diǎn)信息代表一個(gè)文字來判斷列數(shù)。通過定點(diǎn)信息的橫坐標(biāo)來判斷行數(shù)(這個(gè)想了半天才找出的解決方案。我先試的縱坐標(biāo),結(jié)果卻不那么好用,大伙把頂點(diǎn)的值打出來就明白了)。這樣通過修改文字的頂點(diǎn)的位置信息據(jù)解決了。下面是具體的實(shí)現(xiàn):

public override void ModifyMesh(VertexHelper vh)  {    if(spacing_x == 0 && spacing_y == 0) { return; }    if (!IsActive()) { return; }    int count = vh.currentVertCount;    if (count == 0) { return; }    if (mVertexList == null) { mVertexList = new List<UIVertex>(); }    vh.GetUIVertexStream(mVertexList);    int row = 1;    int column = 2;    List<UIVertex> sub_vertexs = mVertexList.GetRange(0, 6);    float min_row_left = sub_vertexs.Min(v => v.position.x);    int vertex_count = mVertexList.Count;    for (int i = 6; i < vertex_count;)    {      if (i % 6 == 0)      {        sub_vertexs = mVertexList.GetRange(i, 6);        float tem_row_left = sub_vertexs.Min(v => v.position.x);        if (tem_row_left <= min_row_left)        {          min_row_left = tem_row_left;          ++row;          column = 1;          //continue;        }      }      for(int j=0;j<6;j++)      {        UIVertex vertex = mVertexList[i];        vertex.position += Vector3.right * (column - 1) * spacing_x;        vertex.position += Vector3.down * (row - 1) * spacing_y;        mVertexList[i] = vertex;        ++i;      }      ++column;    }    vh.Clear();    vh.AddUIVertexTriangleStream(mVertexList);  }

把這個(gè)腳本掛上去,修改spceing_x和spacing_y大伙就能看到效果。如果大伙有更好的實(shí)現(xiàn)方式,歡迎大家留言討論,完。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝丰县| 壤塘县| 南部县| 逊克县| 潜山县| 平潭县| 吴堡县| 乌苏市| 新乡市| 仙游县| 乐陵市| 龙泉市| 班玛县| 白城市| 闻喜县| 石棉县| 阜宁县| 广丰县| 南华县| 琼海市| 绍兴市| 漠河县| 三亚市| 南岸区| 措美县| 七台河市| 中宁县| 邯郸市| 固安县| 深州市| 德化县| 甘孜| 闽侯县| 墨玉县| 西乌| 错那县| 罗城| 文成县| 葫芦岛市| 陇川县| 辉南县|