(NGUI)label设置局部字体大小

本文介绍如何在NGUI中针对UILabel实现局部字体大小的变化,以满足剧情对话中特殊字段(如角色名字)的字体大小需求。通过修改NGUIText.cs的Print()方法,调整verts数组来控制文字显示区域,从而改变字体大小。在调整后,为避免字体重叠,需适当移动文字的x坐标。
摘要由CSDN通过智能技术生成

最近项目里有个需求,在设计剧情对话的时候需要逐个字的播放一个label里的剧情对话,当然这不是关键,关键是策划需求剧情内的某些字段比如名字等需要区别于剧情对话的字体的大小。当然有人会说直接拼label就完事了,当然这是一种解决方案,这里分享一下通过修改uilabel来实现是更改局部字体大小的目的。

实际上label的绘制是在NGUIText.cs这个C#文件内的Print()接口实现的,其中有这样一段的代码:

 if (!bold)
                    {
                        if (!italic)
                        {
                            verts.Add(new Vector3(v0x, v0y));
                            verts.Add(new Vector3(v0x, v1y));
                            verts.Add(new Vector3(v1x, v1y));
                            verts.Add(new Vector3(v1x, v0y));
                        }
                        else // Italic
                        {
                            float slant = fontSize * 0.1f * ((v1y - v0y) / fontSize);
               

NGUILabel组件是一种用于显示文本的UI组件。它支持NGUI插件自带的几种字体和Unity本身的字体。可以将TTF格式的字体文件放置到Unity的Assets目录中进行使用。此外,还可以使用Atlas Maker创建动态字体和静态字体,将文字转换为图片,以提高运行效率。\[2\] Label组件的基本原理是使用两种字体方案:Unity的动态字体(TrueTypeFont,TTF)和NGUI的BitmapFont(BMFont)。UILabel组件维护一个名为mShouldBeProcessed的布尔变量,当设置基本属性时,会将mShouldBeProcessed设置为true,并在父类UIWidget的属性和方法中判断shouldBeProcessed是否为true。如果为true,则调用UILabel的ProcessText方法重新计算信息并重新绘制。NGUIText作为辅助类,是一个静态类,用于缓存绘制文字的参数和相应的计算方法,以减少内存占用。\[3\] 总结来说,NGUILabel组件是一种用于显示文本的UI组件,支持多种字体和字体方案,可以通过设置属性和调用方法来重新计算和绘制文本。 #### 引用[.reference_title] - *1* *2* [Unity的NGUI插件之Label](https://blog.csdn.net/qq_41299069/article/details/90677391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [NGUI-UILabel](https://blog.csdn.net/qq_63483516/article/details/125409019)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值