前言

MMO游戏中需要富文件组件,大体功能包括图文混排,表情,超链接,文字动画等富文本功能,且DC数占用少。

本文选择Unity免费提供的TextMesh Pro 解决方案。

软件环境

Unity3D 5.3.7p4

TextMesh Pro 1.0.555.0b11(Jul 06.2017)

TexturePack 3.x

TextMeshPro文档和资料

Asset Store(免费下载):https://www.assetstore.unity3d.com/cn/#!/content/84126

官方文档:http://digitalnativestudios.com/textmeshpro/docs/

官方论坛:http://digitalnativestudios.com/forum/index.php

视频介绍:Unity纳入TextMesh Pro,打开文本开发新世界

此插件之前是收费的,但Unity把它收购了,目前免费提供给Unity开发者。详见:TextMesh Pro Joins Unity:https://blogs.unity3d.com/cn/2017/03/20/textmesh-pro-joins-unity/

目前在AssetStore开放下载的版本,没有源码,提供的是DLL

自定义图集

我们的项目中使用自定义表情和文字,没有使用示例图集。

制作自定义图集

1、把所有的表情图片导入到TexturePack,打成图集(TexturePack打图集的设置在后面会介绍)

2、TexturePack导出的文件有两个,xxxAtlas.png和xxxAtlas.json

3、把Atlas.png和Atlas.json,导入Unity中,放在TMP指定的目录中

4、点击 WindowTextMesh ProSprite Import

5、制作TextMeshPro可识别的图集后,(在TMP Settings.asset设置默认图集)

在TextMesh的Text中输入文字和表情符号,就可以解析出表情啦

TexturePack打图集的设置

DataFormat设置为Json(Arry)  TextMeshPro能够识别的格式

Size constraints: POT (尺寸设置为2的次方)  这一点很重要,节省内存

左右和上下间隙和Border padding 、Shape Pading 、Inner Padding 都设置为0 ,目地是为保证每一个图片是对齐的。

不自动旋转图片 Auto Rotation 取消勾选

Scale mode 设置为 Smooth

最重要的是:让合成后的表情图集每一个都是对齐的

设置默认图集(Sprite Atlas )

默认情况下,图集资源要放置在相对于 Resource 目录下!

在TextMeshPro目录 TextMeshPro\Resources\TMP Settings.asset 文件可以设置默认的Sprite Atlas。

参考官方文档:http://digitalnativestudios.com/textmeshpro/docs/settings/#sprites

遇到的问题

在项目中我是自定义图集和文字,实现图文混排,在过程中遇到表情和文字不对齐的问题。

表情和文字不对齐

文字和表情混排时,文字和表情上下位置不对齐,表现如下所示:


找出问题

经过仔细的观察对比,发现我们打出来的表情图集和示例图集有区别。

1、我们打出的图集并不是2的次方

2、我们打出的图集,有的表情会有旋转

3、我们打出的图集,从上往下看,或者从左往右看,并不是排成一条线的,也就说没有对齐!

制作图集的要点

在美术同事制作过程中,强烈建议每个表情都是居中对齐:即保证上和下,左和右之间的空白间隙是一致的!

如下图所示的表情,上和下的间距很明显就是不一样的,上方间距小于下方间距。美术给出的解释是:表情底部有阴影。


图片间隙不相同?

如果你们美术同事设计的单张图片的上下留边,或左右留边是不相同的,那要如何处理呢?

在TextMeshPro的图集设置中,可以通过(Gloable)offset y  进行偏移值,让表情对齐,它会自动进行保存,并在保存后,让初始值变为0

TextMesh Pro Emoji Align With Text(表情和文字对齐)的更多相关文章

  1. TextMesh Pro SpriteAsset Load From Assetbundle

    遇到问题 我们项目分两个Unity的工程,Art(美术资源工程),Client(代码工程) 在Art工程中的TextMeshProUGUI Text中使用Emoji,打包成AB之后,在Client运行 ...

  2. TextMesh Pro 超链接解析失败

    前言 软件环境 Unity3D 5.3.7p4 TextMesh Pro 1.0.555.0b11(Jul 06.2017) UGUI做为UI解决方案 文档资料 TextMesh Pro的资料,可以参 ...

  3. EditView插入qq表情,可删除表情或文字

    代码如下: 代码如下: package com.push.notif; import java.lang.reflect.Field; import java.util.Random; import ...

  4. 图文混排——用表情代替"[文字]"

    1.简单设置带属性的字符串 定义一个NSMutableAttributedString带属性的字符串 NSMutableAttributedString *str = [[NSMutableAttri ...

  5. python截取视频制作动态表情包+文字

    1:安装moviepy库 2:安装IPython库 代码如下: from moviepy.editor import * from IPython.display import Image def B ...

  6. [LeetCode] Text Justification 文本左右对齐

    Given an array of words and a length L, format the text such that each line has exactly L characters ...

  7. 电脑文本text和部分文字出现其他语言乱码

     1.文本的编码存在问题 解决办法: 将text文件打开>>文件(左上角)>>另存为>>选择其他格式的编码试试(在保存键左侧)>>保存再打开 2.系统区 ...

  8. iOS推送:Java服务器端发送表情(绘文字)

    http://blog.csdn.net/musou_ldns/article/details/8692520 功能的时候,客户要求能够给iphone发送表情图标,也就是绘文字. 手机环境:iOS5. ...

  9. [leetcode]68. Text Justification文字对齐

    Given an array of words and a width maxWidth, format the text such that each line has exactly maxWid ...

随机推荐

  1. 雅虎公司C#笔试题及参考答案

    Question 1. (单选) 在计算机网络中,表征数据传输可靠性的指标是——21. 传输率2. 误码率3. 信息容量4. 频带利用率Question 2. (单选) 以下关于链式存储结构的叙述中哪 ...

  2. cocoaPods打包的静态库

    cocoaPods管理自己的静态库供其它人下载使用(直接使用上一篇用cocoaPod打包的静态库)(1) 创建github仓库 (2) 下载仓库到本地 (3) 将打包好的framework放到项目中 ...

  3. [转载] 一致性hash算法释义

    转载自http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html 一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Ka ...

  4. ubuntu-16.04使用MDK3伪造wifi热点和攻击wifi热点至死

    MDK3是? MDK3 是一款无线DOS 攻击测试工具,能够发起Beacon Flood.Authentication DoS.Deauthentication/Disassociation Amok ...

  5. 常见的Mysql数据库优化总结

    索引 1.主键索引 作用:唯一约束和提高查询速度 #建表时创建主键索引 create table `table_name`( `id` int unsigned not null auto_incre ...

  6. js实际工作中的技能点

    1.基础知识 a.原型,原型链 b.作用域,闭包 c.异步,单线程 2.JS API a.DOM操作 b.Ajax c.事件绑定 3.开发环境 a.版本管理(git) b.模块化(require.js ...

  7. mac 安装protobuf,并编译

    因公司接口协议是PB文件,需要将 PB 编译成JAVA文件,且MAC 电脑,故整理并分享MAC安装 google 下的protobuf 文件   MAC 安装protobuf 流程 1.下载 http ...

  8. SQL 之存储过程

    存储过程 是用来执行管理任务或应用复杂的业务规则, 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 存储过程的优点 存储过程已在服务器注册 执 ...

  9. Animation-list,帧动画+属性动画,做出Flash般的效果

    我们会用到PS,即使不会也不要怂,只需要几步傻瓜式操作即可. 属性动画可以看看我另一篇文章:属性动画详解 效果图 相信机智的各位,看完之后一定能发挥创意,做出更酷更炫的效果 图层获取 首先你需要找一张 ...

  10. Vue 浅析与实践

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:曾柏羲 导语 入职接到的第一个需求是实现一个关于K歌实体售卖的ERP系统,管理系统过去做过不少,这次打算换个姿势,基于时下正热但早已不新 ...