unity动态图集 UILabel 内创建一个图集????

Unity3D插件之NGUI核心 UI 组件和功能详细使用步骤 - 简书
Unity3D插件之NGUI核心 UI 组件和功能详细使用步骤
一、NGUI 介绍
1.NGUI 插件安装
首先创建一个新的 Unity 工程项目,导入 NGUI 插件资源包。
导入 NGUI 后,Unity 的菜单栏会出现一个“NGUI”菜单,这个菜单包含了
NGUI 所有的操作功能。
2.NGUI 插件目录结构
Editor:编辑器扩展
Examples:示例工程
Resources:资源文件
Scripts:脚本组件
[Unity 是基于组件形式的引擎,任何功能都是一个独立的组件;
组件其实就是一个类,一个对象,一个脚本文件;
NGUI 中所有的 UI 也都是通过组件的形式体现的。]
二、NGUI 基本使用方法
1.NGUI Bug 修复
Bug 出现的环境:Unity5.4.1 + NGUI3.10.0
Bug 信息:Ignoring menu item NGUI because it is in no submenu!
修复步骤:
①找到并打开 NGUI 插件中的“NGUIMenu.cs”脚本文件;
②将 715,716 两行代码注释或者删掉;
③保存修改后的脚本,并重启 Unity 开发环境。
2.使用 NGUI 显示文字
1.简单思考
之前我们想显示一个简单的 3D 模型,我们可以创建一个 Cube 物体。
那么我们想显示文字,那么需要创建什么哪?而且我们使用的是 NGUI?
和文字沾边的单词有 Text 和 Lable。
操作步骤:
NGUI--&Create--&Label
创建一个用于显示文字的“游戏物体”。
切换到 Game 面板,我们就可以看到“New Label”。
2.NGUI 层次结构
UI Root(所有的 NGUI 元素都是这个的子物体)
|---Camera(用于渲染 NGUI 的摄像机)
|---Lable(Lable 游戏物体)
|---More UI(更多的 UI 游戏物体)
3.NGUI 操作细节
①在 Scene 视图“紫色”的矩形,就是我们 NGUI 的操作范围,其实也就是
UI Root 的范围(鼠标选中 UI Root,这个矩形区域会高亮显示)。
②我们可以点击 Scene 视图上方的“2D”按钮,切换到 2D 编辑模式。
③在 2D 模式下,鼠标选中 UI Root,紫色矩形也会高亮,现在将鼠标放到矩
形上,点击鼠标右键,会出现 NGUI 的操作菜单,这个菜单我们后期会大量且
频繁的使用。
④摄像机的图标会影响到我们的操作,可以将这个图标调小。
点击 Scene 面板右上角 Gizmos,3D Icons 选项,调小即可。
3.Prefab Toolbar
1.打开 Prefab Toolbar
NGUI--&Open--&Prefab Toolbar
2.Prefab Toolbar 简介
Prefab Toolbar :(NGUI)预制体工具栏,其实就是 NGUI 提供的一些现成
的 UI 功能元素的预制体文件,我们可以直接鼠标单击选中,然后往 Scene 面板拖拽。
三、基本组件之 UILabel 面板控制
1.字体文件
1.字体图集
将所用到的文字处理成一张图片进行使用,这种比较适合英语国家。
2.TTF 字体
直接使用 TTF 格式的字体进行文字显示。
2.UILabel 面板属性
1.Font Size(字体大小)
控制文字显示的大小,以及基本样式[正常,粗体,倾斜,粗体+倾斜]
2.Text(文字)
UILable 要显示的文字,可以输入多行
3.Modifier(调节器)
控制英文显示状态,正常状态,大写状态,小写状态
4.Overflow(溢出)
当文字大小超出了 Widget 中 Size 属性的大小时,如何处理显示。
ShrinkContent:收缩内容 [再大也无效]
ClampContent:夹持内容 [能显示几个字就显示几个字]
Use Ellipsis:是否使用省略符
ResizeFreely:调整自由 [Widget 中的 Size 自动同步 Font Size]
ResizeHeight:调整高度 [宽度固定,高度自动调整]
5.Alignment(对齐方式)
设置文字的对齐方式
6.Gradient(渐变颜色)
设置文字从上到下的颜色渐变
7.Effect(特效)
设置文字特效,比如:颜色描边,投影
8.Spacing(间距)
设置文字与文字之间的间距大小
9.Color Tint(色彩化)
设置文字显示的颜色
四、基本组件之 UILabel 代码控制
1.文字展示案例
1.元宝与钱币数显示
重点设置 UILabel 的中心点,以及 Overflow 样式。
中心点水平轴向为左侧或者右侧;
Overflow 一般设置为 ResizeFreely。
2.物品描述信息
文字在一个固定区域内显示。
重点设置 UILabel 的中心点,以及对齐方式还有 Overflow 样式。
中心点设置为垂直轴向的顶部;
对齐方式为左对齐;
Overflow 为 ResizeHeight。
2.代码控制 UILabel
1.代码控制金币数
代码查找到对应的游戏对象,修改游戏对象身上的 UILabel 组件的 Text 属性。
2.代码控制物品描述
方法步骤同上
NGUI 代码中换行“\n”
五、NGUI 图片管理工具 AtlasMaker
1.AtlasMaker 制作图集
1.什么是 Atlas?
Atlas:图集,图片的一个集合,或者说打包格式。NGUI 中的 UISprite 组件
显示图片,需要用到图集,就和 UILabel 显示需要用到字体是一样的道理。
2.什么是 AtlasMaker?
AtlasMaker:图集制作器,NGUI 提供的打包 Atlas 的工具。
3.AtlasMaker 制作图集步骤
①打开 AtlasMaker 工具,点击“new”按钮;
②将需要打包成 Atlas 的图片选中;
②点击“Create”按钮,给新图集命名保存。
4.Atlas 结构分析
每一个 Atlas 都是由三个文件组成:
xxx.png:贴图文件,小图片拼接成的一张大图片
xxx.mat:材质球文件,使用 xxx.png 为素材制作的材质球
xxx.prefab:图集文件,使用 xxx.mat 为素材制作的图集文件
依赖关系:png--&mat--&prefab
2.图集常用修改操作
1.往图集中增加新图片
①打开 AtlasMarker,选中需要修改的图集;
②选中需要增加的图片,然后点击“Add/Update”按钮。
2.从图集中删除图片
①打开 AtlasMarker,选中需要修改的图集;
②点击图集中图片后面的“X”按钮,然后 Delete。
六、基本组件之 UISprite 面板控制
1.UISprite 显示图片
①创建 UISprite 组件,步骤:NGUI--&Create--&Sprite;
②选择图集,选择要显示的图片;
③Widget 中点击“Snap”按钮,让图片原始大小显示;
④Widget 中“Aspect”选中“Based On Width”,便于等比例调整图片
2.UISprite 面板属性
1.Type(类型/模式)
Simple:简单模式 默认展示效果
Sliced:九宫模式 适合于按钮背景图处理 [演示九宫处理]
Tiled:平铺模式 使用该图片平铺 Widget 中 Size 的区域
Flip:进度模式 最复杂的一种图片模式
|---Fill Dir 填充方向
|---Fill Amount 填充量
|---Invert Fill 翻转填充
七、基本组件之 UISprite 代码控制
1.图片案例展示
1.金币元宝界面制作
导入相关的素材图片,更新图集,使用 UISprite 和 UILabel 制作界面。
2.代码控制 UISprite
1.动态创建 UISprite
分析手动添加 UISprite 时的步骤,然后使用代码还原整个步骤。
2.动态控制 UISprite 的属性
获取到当前的 UISprite 对象,以“.”的形式调出属性进行赋值,属性的名称
和 Inspecctor 面板上组件属性名基本保持一致。
八、基本组件之 UIButton 面板控制
1.UIButton 制作按钮
1.基础说明
在 UI 界面制作过程中,UILabel 用于显示文字,UISprite 用于显示图片,无
论多复杂的 UI 界面,都是由最基础的文字+图片的形式展示(制作)的。
UI 界面的主要功能有两个:1&展示数据;2&人机交互。
而最核心的交互就是点击,使用鼠标或者手指点击 UI,而能接收点击的 UI 组件
叫做 UIButton。我们可以在 UILable 和 UISprite 的基础上附加 UIButton
组件制作出我们的 UI 按钮。
2.按钮制作步骤
①首先展现一张图片或者一段文字;
②Attach--&BoxCollider,确定可以点击的区域,其实点击按钮就是这个这
个 Collider 区域进行交互的;
③Attach--&ButtonScript,附加按钮组件,按钮制作到此完成。
2.UIButton 面板属性
1.Colors 数组
使用颜色来描述按钮的四种状态。
如果不想让颜色影响图片的效果,可以将四种颜色全部选择为白色。
2.Sprites 数组
组使用图片来描述按钮的四种状态。
3.按钮四种状态
①Normal(*):默认原始状态;
②Hover:经过停留状态;
③Pressed(*):按下状态;
④Disabled:不可用状态;
九、基本组件之 UIButton 代码控制
1.按钮点击事件绑定
1.面板属性栏绑定
①创建一个代码文件,定义一个公开的方法,挂载到一个游戏物体上;
②将该脚本拖拽到 UIButton 的 OnClick 事件上(注意看我的操作演示)。
2.代码绑定
①创建一个代码文件,挂载到按钮游戏物体上;
②定义一个叫做 OnClick()的方法。
2.按钮交互声音
1.UIPlaySound 组件
当我们和按钮进行交互(比如:点击)的时候,可以播放一个点击声音,起到一
个辅助反馈的作用。
2.操作步骤
①Attach--&Play Sound Script 添加组件;
②Audio Clip 指定一个声音文件;
③指定 Trigger 触发该声音播放的事件,常用的是 OnClick。
十、UI 动态加载
1.原理介绍
在实际项目开发过程中,UI 界面制作好以后会拖拽成为一个 Prefab 资源,和
Scene 场景分离,在实际加载到该场景的时候,动态的加载显示 UI 界面。
这样可以使得 UI 和 Scene 进行分离,好处是很大的,分离后我就可以让不同
的人编辑制作不同的部分,否则的话,UI 和 Scene 在一起,多人编辑的时候,
项目是没法合并(SVN,Git)的。
2.操作演示
①将制作好的 UI 面板拖拽成为一个 Prefab 资源,放到 Resources 文件夹下;
②使用 Resources.Load()将该资源加载到内存中;
③实例化该 UI 资源对象,放到 UIRoot 下完成显示;
3.相关 API
NGUITools.AddChild(父对象, 子对象); NGUI 提供的一个实例化物体,设置子物体的一个内置函数,操作 UI 尽量使用
该 NGUI 封装的函数。
CreateUISprite
using UnityE
using System.C
/// &summary&
/// 使用代码控制UISprite 组件
/// &/summary&
public class CreateUISprite : MonoBehaviour {
private Transform m_T
void Start () {
//获取游戏物体的transform物体组件
m_Transform=gameObject.GetComponent&Transform&();
//实例化对象
GameObject uiSprite = new GameObject("TonyWan");
//设置父物体;
uiSprite.GetComponent&Transform&().SetParent ( m_Transform);
//重置Scale;
uiSprite.GetComponent&Transform&().localScale = Vector3.
//动态添加图集
UISprite sprite=uiSprite.AddComponent&UISprite&();
//读取图集 资源加载
UIAtlas atlas=Resources.Load&UIAtlas&("GameAtlas");//参数1:表示自定义的图集名称;
//给组件指定图集
sprite.atlas=
//给组件指定图片
sprite.spriteName="";
public class MyButton : MonoBehaviour {
//第一种点击事件方法
//定义一个公开button点击事件
public void ButtonClick() {
Debug.Log("我是Button按钮被点击了");
//第二种点击事件方法
//代码绑定点击事件 OnCLick内置点击事件 写这个就会点击
public void OnClick(){
Debug.Log("我是代码绑定点击事件");
UILabelTest
public class UILabelTest : MonoBehaviour {
//声明一个持有引用
private UILabel goldN
private UILabel item_L
void Start()
//查找值物体
goldNumber = GameObject.Find("goldNumber").GetComponent&UILabel&();
//对文本进行赋值
goldNumber.text = "";
//对字体颜色改变
goldNumber.color = Color.
void Update () {
//按下空格键 进行描述切换
if (Input.GetKeyDown(KeyCode.Space))
item_Label=GameObject.Find("item_Label").GetComponent&UILabel&();
item_Label.text = "TonyWanTonyWanTonyWanTonyWanTonyWan\n我要换行了!TonyWanTonyWanTonyWanTonyWanTonyWanTonyWanTonyWan";
public class UIManager : MonoBehaviour
//声明一个持有引用,用来存贮加载后的预制体
private GameObject prefab_I
void Start () {
//存贮预制体
prefab_Info=Resources.Load&GameObject&("Info");//泛型 GameObject 参数1:预制体的名称
//NGUI自带API 把预制体加载到场景中去 有重载
NGUITools.AddChild(gameObject, prefab_Info);//参数1:父物体 参数2:子物体
撸码,喂马,劈柴,周游世界.........AR/VR技术交流群:
用到的组件1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SDWebImage多个缩略图缓存组件 UICKeyChainStore存放用户账号密码组件 Reachability监测网络状态 DateTools友好...
内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新ViewPager图表(Chart)菜单(Menu)浮动菜单对话框空白页滑动删除手势操作RecyclerViewCardColorDrawableSpinner...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
用到的组件1、通过CocoaPods安装项目名称项目信息AFNetworking网络请求组件FMDB本地数据库组件SDWebImage多个缩略图缓存组件UICKeyChainStore存放用户账号密码组件Reachability监测网络状态DateTools友好化时间MBP...
1、通过CocoaPods安装 主要用来将 JSON 数据模型化为 Model 对象 2、第三方类库安装 UI下拉刷新EGOTableViewPullRefresh– 最早的下拉刷新控件。SVPullToRefresh– 下拉刷新控件。MJRefresh– 仅需一行代码就可...
明天取暖期正式结束,公婆晚饭说,明天就回自己家了。虽然这是早就说好的事情,说实话,也盼着老人不在的自由,可是这一天来了,心里却真的很舍不得。 也许自己早已经习惯了有老人照顾的日子,回到家不用动手,就能吃上丰盛的饭菜,一切的生活用品,几乎都不用操持。但是,心里也清楚,老人需要...
四年前…… “叮咚,叮咚,叮咚&门铃响了,我放下手中的笔,急急忙忙地跑过去开门,推开门,一个熟悉而又陌生的身影出现在了眼前,粗糙的脸上依旧挂着憨憨的笑容,不同的是,身后背着一个外形特别的东西,用贴合形状的黑色布包装着。“你要的吉他给你买回来了,快看看喜不喜欢?”干涩的嘴唇动...
Eclipse中,在方法上面敲打/**回车,方法模板就出来了,那么在AndroidStudio中又什么什么快捷键呢,下面我给大家介绍介绍 以mac系统下的AndroidStudio为例子: 1、选择Preferences... 2、在搜索框输入comment,在Keymap...
《念奴娇·赤壁怀古》 大江东去,浪淘尽,千古风流人物。故垒西边,人道是:三国周郎赤壁。乱石崩云,惊涛裂岸,卷起千堆雪。江山如画,一时多少豪杰。 遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间,樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人间如梦,一樽还酹江月。 羽扇...你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
我已经制作好字体的预制体了, 我手动输入的话显示中文是正常的,但是如果我用代码控制的话, 中文全部都变成问号了
请问为什么会这样子??
然后顺便问一下,
怎么样对UILABEL内输入的数字进行计算呢?
请问这个在哪里改呢??你是用monodevelop打开的吧,在菜单上面 file-》save as。。-》选择utf-8格式覆盖保存就可以了
可能是你编辑器默认不是UTF-8格式的把
你没有设置中文字体 所以会乱码
你输入英文就不会是吧
! 你设置下中文字体
你代码文件的格式是不是utf-8?不是改成这个就可以了。。第二个问题没明白什么意思,你是计算什么东西?
uilabel.text=""+
你可以放个空字符,然后后面是你的数字,这样就可以进行计算了,不需要放到""里面。
你代码文件的格式是不是utf-8?不是改成这个就可以了。。第二个问题没明白什么意思,你是计算什么东西? ...请问这个在哪里改呢??
uilabel.text=""+
你可以放个空字符,然后后面是你的数字,这样就可以进行计算了,不需要放到"" ...我是要获取游戏界面输入后的UILABE数字内容进行计算
你代码文件的格式是不是utf-8?不是改成这个就可以了。。第二个问题没明白什么意思,你是计算什么东西? ...我的是MAC系统======={:89:}
我是要获取游戏界面输入后的UILABE数字内容进行计算那你自己输入什么你自己设置个变量记录下来啊
或者说你输入的是123456
然后你点击按钮的时候写一个函数,记录一下label当前的内容传给定义的变量
1代码文件改utf-8,至于mac怎么改百度下把,我也没用过mac
2int x=convert.toint(uilabel.text.trim)//需要保证label中的文字是数字
我是要获取游戏界面输入后的UILABE数字内容进行计算ngui input控件下面有个选项keyboard type 选择 numbers and punctuation,就保证输入的数字,然后使用
int i = system.convert.Toint32(uilabel.text);
convert下面各种转化,你自己可以看看
那你自己输入什么你自己设置个变量记录下来啊或者说你输入的是123456
{:98:}骚年,你不觉得你这话说了跟没说一样吗
你是用monodevelop打开的吧,在菜单上面 file-》save as。。-》选择utf-8格式覆盖保存就可以了 ...{:96:}问题已解决,就是用拼音代替了, 但是你这方法很好啊,
留着或许以后需要中文的时候就用到了
要回复问题请先或
浏览: 1222
关注: 0 人UILabel的使用笔记
UILabel的使用1、创建并设置位置尺寸UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];
[self.view addSubview:myLabel];2、设置文字NSString *text = @"标签文本";
myLabel.text =3、设置文字颜色myLabel.textColor = [UIColor blueColor];4、设置标签文本NSString *text = @"其实没什么";
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:text];
[attributeString setAttributes:@{
NSForegroundColorAttributeName : [UIColor redColor],
NSFontAttributeName : [UIFont systemFontOfSize:17]
} range:NSMakeRange(2, 1)];
myLabel.attributedText = attributeS
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Unity3D之UILabel的用法
要使用UILabel时请注意:
[99ff00]colored[-]
[b]bold[/b]
[i]italic[/i]
[u]underline[/u]
[s]strike[/s]
等标记的使用
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Unity NGUI UILabel文字变色 及相关问题
在同一个UILabel中可以有不同颜色的文字只需要添加BBCode标记[ff0000]Red Label[-],那么在这个标记之间的RedLabel 就会变成红色
1.文本最终显示的颜色=Color Tint的颜色+你的颜色标记。所以如果你的Color Tint的颜色是黑色,再在代码中添加颜色标记,那么最终还是黑色。
2.BBCode属性要勾选上,否则标记代码会被当做普通字符,一般情况下默认都是勾选的,但是如果你的Label是在InputLabel中变色,那么程序运行后,UILabel的BBCode属性会被取消,UILabel不会变色,需要代码里把它选中:
UILabel.supportEncoding =
其他BBCode标记
[b]Bold[/b]
[i]italic[/i]
[u]underline[/u]
[s]strikethrough[/s]
[sub]sub[/sub]
[sup]sup[/sup]
[url=http://www.cnblogs.com[u] CSDN [/u][/url] 链接(链接需要添加代码响应点击,毕竟如果你的Label上没有Collider,也不会发生什么事)
你要或许URL,当点击的时候用Application.OpenURL(url);
最后说一个UIInput的问题,动态给UIInput的Label赋值不能直接设置UILabel的值,否则再次点击输入值时,原来赋值的UILabel内数值会消失,只能给UIInput.value赋值。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 unity 加载图集 的文章

 

随机推荐