创建一个新的Scene,并按 Unity插件之NGUI学习(2)创建UI Root。

准备工作,制作Font。如今Project窗体创建一个Font目录。然后从系统自带字体目录中选择自己须要的字体,我选择了黑体。然后拖到Font目录中去。

选择刚导入的字体。

Font Size默认是16,只是网上看到过size16在IOS上显示太小。所以设置为30。

在菜单中选择NGUI->Open->Font Maker

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGNvb2tpZXM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

Type默认是Generated Bitmap——会生成材质文件,Dynamic——动态字体。只是黄色警告提示动态字体会产生多余的DrawCall,考虑绘制性能问题,所以选择了Generated Bitmap。

Source选择刚才导入的黑体字体。

Size——设置材质图片中字体的大小。

Custom——能够添加游戏中显示的文字。

Atlas——选择原有已经制作的的Atlas(图文混排时,须要与混排的图片制作在同一个Atlas)。

然后点击Create the Fontbutton,在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]地址链接

看下显示效果

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGNvb2tpZXM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

以下加入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真的非常强大,尤其是图文混排。还支持局部黑体、斜体、下划线等等功能,唯一遗憾的是图文混排时。假设图片过大时,排版有点难看,所以制作图片的时候。尽量使用跟字体高度差点儿相同的图片比較合适。

Unity插件之NGUI学习(5)—— 创建Label图文混排及文字点击的更多相关文章

  1. Unity插件之NGUI学习(4)—— 创建UI2DSprite动画

    创建一个新的Scene.并按 Unity插件之NGUI学习(2)创建UI Root,并在UI Root的Camera下创建一个Panel. 然后在选中Panel,在菜单中选择NGUI->Crea ...

  2. Unity插件之NGUI学习(8)—— Table和NGUI尺寸转换为世界坐标系尺寸

    依据 Unity插件之NGUI学习(2),创建一个UI Root,在UI Root下创建一个Texture作为背景图,并设置图片,在Wiget下调整大小:然后在UI Root下再创建一个Panel. ...

  3. Unity插件之NGUI学习(1)—— 环境搭建

    Unity官网http://unity3d.com/unity/download下载最新版本号4.5.4 在圣典论坛上找到破解补丁(Windows)版本号tid=18741&fid=8&quo ...

  4. Unity插件之NGUI学习(6)—— 关于Widget怎样加入触发事件(触发OnClick)

    NGUI中,Button本身就带有OnClick事件,可是Sprite,Label等( 也绑有Widget的)并没有触发事件,事实上NGUI的事件触发都必须加入Box Collider,并勾选Is T ...

  5. 【学习中】Unity插件之NGUI 完整视频教程

    课程 章节 内容 签到 Unity插件之NGUI 完整视频教程 第一章 NGUI基础控件和基础功能学习 1.NGUI介绍和插件的导入 6月29日 2.创建UIRoot 6月29日 3.学习Label控 ...

  6. Unity UGUI图文混排源码(二)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  7. Unity琐碎(3) UGUI 图文混排解决方案和优化

    感觉使用Unity之后总能看到各种各样解决混排的方案,只能说明Unity不够体恤下情啊.这篇文章主要讲一下个人在使用过程中方案选择和优化过程,已做记录.顺便提下,开源很多意味着坑,还是要开实际需求. ...

  8. Unity UGUI图文混排(七) -- 下划线

    之前更新超链接的时候,忘了搭配实现一个下划线的功能,这篇文章就是来补上这一个功能,时间有点长,一方面没有很好的思路,一方面也没多少时间. 先在网上收集了一下下划线的实现操作,一种是在文本下再创建一个文 ...

  9. Unity UGUI图文混排源码(三) -- 动态表情

    这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章 Unity UGUI图文混排源码(二):http://blog.csdn. ...

随机推荐

  1. 64。node.js 中间件express-session使用详解

    转自:http://jinjiakarl.com/2018/06/09/node-js-%E4%B8%AD%E9%97%B4%E4%BB%B6express-session%E4%BD%BF%E7%9 ...

  2. day 5 集合

    # -*- coding: utf_8 _*_# Author:Vi#集合是无序的 list_1 = [1,2,3,2,3,5,7]list_1 = set(list_1)#将列表转变成集合list_ ...

  3. ArcGIS Api For Flex 动态画点和线

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  4. 【项目基础】容器、AOP理论篇

    一.容器(砂锅) 1.概念: 容器是应用server中位于组件和平台之间的接口集合 2.应用: 容器一般位于应用server之内,由应用server负责载入和维护.一个容器仅仅能存在于一个应用serv ...

  5. 【基础练习】【线性DP】codevs2622 数字序列(最大连续子序列和)题解

    版权信息 转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看 这道题目本质就是朴素的最大连续子序列和 直接上题目和代码 题目描写叙述 Descr ...

  6. BIND View 加速南北方网络互访

            BIND View 加速南北方网络互访          南北方网络互访的问题一直以来就是广大运维人员的心病,两大网络运营商之间的连接带宽比较有限,跟不上互联网业务发展的速度.如何才能 ...

  7. Spider_selenium

    json模块 什么是json? javascript中的对象和数组 对象:{key:value}取值:对象名.key 数组:[...,...]取值:数组[索引值] 作用 json格式的字符串和Pyth ...

  8. LAN8720A网络模块的使用问题

    一.LAN8720A模块驱动电路 最近在调试STM32F4驱动LAN8720A网络模块,在做方案前参考是正点原子的LAN8720A的驱动电路方案,但是从网上买回来的LAN8720A模块用正点原子的例程 ...

  9. 【2017"百度之星"程序设计大赛 - 初赛(B)】度度熊的交易计划

    [链接]点击打开链接 [题意] 在这里写题意 [题解] 先设一个超级源点,向每个片区都建一条边,容量为b,费用为-a; 然后从每个片区再连一条边,指向一个超级汇点. 容量为d,费用为c; 然后从起点到 ...

  10. C/C++函数指针声明

    前天看APUE,看到signal的声明竟然是 void (*signal(int,void(*)(int)))(int); 初看下面,还真是看不出这是啥意思.道行太浅,仅仅能看到这样的函数指针 voi ...