unity 5.5 ugui美術字を使う

2944 ワード

ファイルの転載先:http://www.jianshu.com/p/a4e6d1ca3ca0
 
プロジェクトは美术字を使って戦闘効果の表现を强化する必要があります.従来のNGUIの使用経験によると、これは简単なはずです.Googleはすぐにいくつかの技术ブログを持っています.例えば、このUnityチュートリアルの-UGUI美术フォントの制作と使用などです.
ブログに従って操作して、フォントが表示されていないことに気づいて、それからまた流れをチェックして、操作が大丈夫であることを発見して、結果はやはり文字を表示していません.振り回されたあげく、フォント生成時に使われていたapiは5.5バージョンで廃棄された.
ArtistFont.cs:

CharacterInfo info = new CharacterInfo();
info.index = bmInfo.index;
info.uv.x = (float)bmInfo.x / (float)mbFont.texWidth;
info.uv.y = 1 - (float)bmInfo.y / (float)mbFont.texHeight;
info.uv.width = (float)bmInfo.width / (float)mbFont.texWidth;
info.uv.height = -1f * (float)bmInfo.height / (float)mbFont.texHeight;
info.vert.x = (float)bmInfo.offsetX;
info.vert.y = (float)bmInfo.offsetY;
info.vert.width = (float)bmInfo.width;
info.vert.height = (float)bmInfo.height;
info.width = (float)bmInfo.advance;
CharacterInfo:

[Obsolete ("CharacterInfo.uv is deprecated. Use uvBottomLeft, uvBottomRight, uvTopRight or uvTopLeft instead.")]
public Rect uv;

[Obsolete ("CharacterInfo.vert is deprecated. Use minX, maxX, minY, maxY instead.")]
public Rect vert;

apiが破棄されたため、実際の文字情報はフォントファイルに書き込まれず、もちろんフォントは表示されません.
次の方向はuvBottomLeft,uvBottomRight,uvTopRight,uvTopLeftをuv,minX,maxX,minY,maxYの代わりに対応文字情報を出力することである.目標ははっきりしているが、過程は非常に曲がりくねっていて、長い間振り回されていたが、具体的な書き方が分からなかった.万能のGoogleを借りて、私はこの文章UnityのUGUIでCustomFont(BMFont)を使って、コアコードを見つけた.
CharacterInfo info = new CharacterInfo();  
info.index = id;  
float uvx = 1f*x/texWidth;  
float uvy = 1 - (1f*y/texHeight);  
float uvw = 1f*width/texWidth;  
float uvh = -1f*height/texHeight;  

info.uvBottomLeft = new Vector2(uvx, uvy);  
info.uvBottomRight = new Vector2(uvx + uvw, uvy);  
info.uvTopLeft = new Vector2(uvx, uvy + uvh);  
info.uvTopRight = new Vector2(uvx + uvw, uvy + uvh);  

info.minX = xoffset;  
info.minY = yoffset + height / 2;   //          ok ,      
info.glyphWidth = width;  
info.glyphHeight = -height; //   ,          ,   unity  uv    
info.advance = xadvance;

注釈を見ても、このブロガーは同じように愚かな顔をしていることが分かったが、論理を無理やりにやっつけた.このコードを参考にして、実は基本的に写して、それではどうして参考を呼ぶのですか?まだ完全に適用できないので、コードを変更してから効果を正しく表示することができます.
info.minY = yoffset + height

やっと文字を表示できました.
スクリーンショット2017-03-24 21.2.33.png
ワクワクしますね!!!でも0を5つ入力したのに、なんで1つの数字が表示されるの??元文字が重なっていました..引き続き万能なグーグル、私は同じ问题の投稿を见つけました[问答]unity 5.3版内UGUI制作美术字重叠怎么破、同じように私も1万头の草泥马が心の中で狂奔している答えを见つけました
スクリーンショット2017-03-24 21.2.2.2.1 png
以前UGUIのグラフィックミックスの経験があったので、Textを継承して頂点位置を修正すればフォントが正常に表示されます.
スクリーンショット2017-03-24 21.38.00.png
プロジェクトソースを添付してダウンロード
unity
作者:dumpling 2017
リンク:http://www.jianshu.com/p/a4e6d1ca3ca0
出典:簡書
著作権は作者の所有である.商業転載は著者に連絡して許可を得てください.非商業転載は出典を明記してください.