1. 程式人生 > >Unity外掛之NGUI學習(5)—— 建立Label圖文混排及文字點選

Unity外掛之NGUI學習(5)—— 建立Label圖文混排及文字點選

建立一個新的Scene,並按 Unity外掛之NGUI學習(2)建立UI Root。

準備工作,製作Font,現在Project視窗建立一個Font資料夾,然後從系統自帶字型資料夾中選擇自己需要的字型,我選擇了黑體,然後拖到Font資料夾中去。選擇剛匯入的字型。


Font Size預設是16,不過網上看到過size16在IOS上顯示太小,所以設定為30。

在選單中選擇NGUI->Open->Font Maker

Type預設是Generated Bitmap——會生成材質檔案,Dynamic——動態字型,不過黃色警告提示動態字型會產生多餘的DrawCall,考慮繪製效能問題,所以選擇了Generated Bitmap。

Source選擇剛才匯入的黑體字型。


Size——設定材質圖片中字型的大小。

Custom——可以增加遊戲中顯示的文字。

Atlas——選擇原有已經制作的的Atlas(圖文混排時,需要與混排的圖片製作在同一個Atlas)。

然後點選Create the Font按鈕,在Project視窗會生成Font的Prefab


設定圖文混排的標識,選擇Project視窗中剛製作的Font Prefab,然後在Inspector視窗設定圖片標識。


在Symbols and Emoticons視窗,目前我只是的圖片標識有:"(<)" 使用undo_btn代替,"(?)"使用help_btn代替。

選擇選單NGUI->Open->Widget Wizard(Legacy)


Atlas選擇剛才製作Font中output的Atlas

Font選擇剛才製作的Font Prefab

Template選擇Label

Add To選擇UI Root

然後在Inspector設定Label引數


Font Size —— 字型大小。

Overflow 選擇ResizeHeight,由文字總體高度來決定。

Effect —— None沒有特效,Shadow陰影,Outline描邊。

其他的屬性大家可以自己嘗試,應該都能讀懂的。

文字內容:

[b]bold[/b],[i]italic[/i],[u]underline[/u], [s]strikethrough[/s],
[sub]sub[/sub] 
[00ff00]Green[-]
Lucy(?) 露茜軍團 (<)





[url=http://blog.csdn.net/xcookies][u]clickable [/u][/url]

[b][/b]黑體 [i][/i]斜體 [u][/u]下劃線 [s][/s]中劃線 [sub][/sub]副標題效果 [00ff00][-]顏色效果 (?) (<)就是剛才設定的圖片標識 [url=http://blog.csdn.net/xcookies][/url]地址連結

看下顯示效果


下面新增Label的點選效果,使使用者點選了clickable字樣可以開啟Url連結。

建立一個C# Script

using UnityEngine;
using System.Collections;


public class LabelClickTest : MonoBehaviour {

void OnClick ()
{
Debug.Log("Label Click");
UILabel lbl = GetComponent<UILabel>();

if (lbl != null)
{
string url = lbl.GetUrlAtPosition(UICamera.lastHit.point);
if (!string.IsNullOrEmpty(url)) Application.OpenURL(url);
}
}
}

在Hierarchy視窗選擇Label,選擇選單Component->Physics->Box Collider,勾選Is Trigger在Inspector視窗設定Box大小尺寸,可以在Widget的Collider勾選auto-adjust to match。然後將剛才的LabelClickTest指令碼新增到Label。

運行遊戲,點選clickable字樣,會自動開啟瀏覽器,訪問Label內容的Url連結。

PS:NGUI的Label真的很強大,尤其是圖文混排,還支援區域性黑體、斜體、下劃線等等功能,唯一遺憾的是圖文混排時,如果圖片過大時,排版有點難看,所以製作圖片的時候,儘量使用跟字型高度差不多的圖片比較合適。