【游戏开发实战】Unity UGUI Text图文混排(聊天文字混表情),支持动态表情,出招吧表情帝
文章目录
- 一、前言
- 二、最终效果
- 三、具体使用
- 1、导入表情素材
- 2、设置图片格式
- 3、生成表情图集
- 4、UI-EmojiFont.shader
- 5、材质球
- 四、测试
- 五、结束语
一、前言
点关注不迷路,持续输出Unity
干货文章。
嗨,大家好,我是新发。
我们在聊天中经常会使用到表情插在文字中的情况,比如下面这样:
我们在Unity
中如何实现这种图文混排的效果呢?今天就来介绍下Unity UGUI Text
图文混排的实现吧。
二、最终效果
本文Demo
工程已上传到CodeChina
,感兴趣的同学可自行下载学习。
地址:https://codechina.csdn.net/linxinfa/UnityEmojiTextDemo
注:我使用的Unity版本:2020.2.7f1c1 (64-bit)
。
注:本工程改版自
Github
工程:https://github.com/zouchunyi/EmojiText
三、具体使用
1、导入表情素材
将表情图片素材(png
格式)导入到Unity
工程中的这个目录中:Assets/Emoji/Input
,
注意图片命名规范:纯字母.png
或 纯字母_数字.png
,例:a.png
, b_0.png
,b_1.png
。
同一个表情的序列帧图片,以_数字
结尾,一个表情最多支持8帧序列帧。
确保所有表情图片的尺寸一致,且是正方形,不要有的大有的小。
2、设置图片格式
设置图片格式为Default
,设置Non-Power of 2
(2的n次方)为ToNearest
,勾选Read/Write Enabled
。
最后点击Apply
按钮。
看下此时单个表情的尺寸,如下,是128*128
。
3、生成表情图集
点击菜单EmojiText / Open Emoji Build Editor
。
此时打开窗口如下,填写单个表情图尺寸为128
。
点击生成图集
按钮,生成成功。
可以看到Output
目录生成了三个文件。
其中emoji.txt
记录了每个表情的数据信息。
会同时自动拷贝一份到Resources
文件夹中。
那个emoji_data
用于记录序列帧数量,
计算公式:
half frameCount = 1 + sign(data.r) + sign(data.g) * 2 + sign(data.b) * 4;
就是用rbg来存储一个数值,例:
只有1帧,r:0 g:0 b:0,那么就是黑色,
如果有2帧,r:0.5 g:0 b:0,那么就是红色,
如果是4帧,r:0.5 g:0.5 b:0,那么就是军绿色
4、UI-EmojiFont.shader
Shader
文件夹中是一个UI-EmojiFont.shader
,shader
代码见Demo
工程。
5、材质球
Material
文件夹中是一个材质球。
材质球使用上的shader
脚本,设置Emoji Texture
为表情图集,设置Emoji Data
为
因为生成的图集的每一行是4个表情,所以设置Emoji count of every line
为4,FrameSpeed
是每秒播放序列帧数量,设置为4差不多。
四、测试
在Canvas
子节点下创建一个空物体,挂上EmojiText
脚本(脚本代码参加Demo
工程)。
设置Material
为上面的材质球,Text
输入文本,要显示表情,则以[数字]
的形式显示。
具体数字表示哪个表情,就是上文说的生成的那个emoji.txt
中的key
。
运行效果如下:
我们可以看到,只需要2个批次即可,效果还是不错的。
五、结束语
完毕。
喜欢Unity
的同学,不要忘记点击关注,如果有什么Unity
相关的技术难题,也欢迎留言或私信~
【游戏开发实战】Unity UGUI Text图文混排(聊天文字混表情),支持动态表情,出招吧表情帝相关推荐
- 【游戏开发实战】用Go语言写一个服务器,实现与Unity客户端通信(Golang | Unity | Socket | 通信 | 教程 | 附工程源码)
文章目录 一.前言 二.Go开发环境搭建(Windows系统) 1.安装Go命令行工具 2.创建GoWorkspace目录 3.配置GOPATH环境变量 4.配置GOPROXY代理 5.安装VSCod ...
- 【游戏开发实战】Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)
文章目录 一.前言 二.思考问题与解决方案 1.思考问题 2.解决方案 2.1.Unity中如何开启摄像头并对图像进行采样 2.2.图像如何中转给其他客户端 2.3.如何实现清晰度切换 2.4.客户端 ...
- 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)
文章目录 一.前言 二.实现方案 1.无主之地,第一人称视角 2.我之前做的摇杆控制 3.第一人称视角 + 摇杆控制 三.开始实战 1.资源获取:Unity AssetStore 2.Low Poly ...
- 《Unity 5.x游戏开发实战》一1.9 添加一个水平面
本节书摘来异步社区<Unity 5.x游戏开发实战>一书中的第1章,第1.9节,作者: Alan Thorn 译者: 李华峰 责编: 胡俊英,更多章节内容可以访问云栖社区"异步社 ...
- 【Unity】动作游戏开发实战详细分析-07-连续技与组合技功能设计
[Unity]动作游戏开发实战详细分析-07-连续技与组合技功能设计 基本思路 在一些动作游戏中,存在着连续技这一功能,具体来说就是连续按下规定的按键会触发能力的功能,或者是长按触发等等. 实现解析 ...
- 《Unity 2D与3D手机游戏开发实战》简介
#好书推荐##好书奇遇季#<Unity 2D与3D手机游戏开发实战>,京东当当天猫都有发售.彩色印制,定价89元,网店打折销售更便宜.本书配套源码.PPT课件,适合Unity游戏开发初学者 ...
- 【Unity】动作游戏开发实战详细分析-16-敌人AI设计
[Unity]动作游戏开发实战详细分析-16-敌人AI设计 基本思想 本文来实现简单的敌人AI,使用协程来开发AI.如果想要使用行为树插件可自行学习使用. 代码实现 敌人的目标信息结构 用于存储所有的 ...
- 【游戏开发实战】教你在Unity中实现模型消融化为灰烬飘散的效果(ShaderGraph | 消融 | 粒子系统 | 特效)
文章目录 一.前言 二.ShaderGraph环境准备 三.模型准备:原神角色模型 四.实现思路 1.效果一的实现思路 2.效果二的实现思路 五.ShaderGraph具体实现 1.效果一 1.1.创 ...
- 【Unity】动作游戏开发实战详细分析-06-技能系统设计
[Unity]动作游戏开发实战详细分析-06-技能系统设计 基本思想 不同的技能可以设计为技能模版,当角色释放技能时,会通过模版ID将它进行实例化,这个实例技能类可以是一个挂载的MonoBehavio ...
最新文章
- Ubuntn删除软件
- java common.lang_Java 开源工具 Apache Common Lang
- 夜宵虽好,可不要贪“杯”哦
- python中dir用法_Python内置函数dir详解
- 201671010144 2016-2017 《java程序设计》--对象与类!
- 解决交通拥堵、监测核辐射、野外搜救…无人机将有哪些神应用?
- rtsp直接转http fmp4
- table中添加下拉框
- IE发现新的零日攻击漏洞 用户可采取缓解措施
- 佳能ts9020墨盒不识别_佳能打印机哪一款性价比高 佳能打印机型号推荐【详解】...
- ODBC连接达梦数据库配置
- 移远M26实现短信接收
- origin画图畸变
- 【云原生之Docker实战】使用docker部署DokuWiki知识库系统
- 揭秘可变剪切研究的本质
- 科技服务:当共享单车成为免费使用
- 【NodeJs-5天学习】第三天实战篇③ ——基于MQTT的环境温度检测
- 谈谈结果导向的做事方式
- 了解.net框架 MonoRail
- Zhong__Linux系统安装MongoDB数据库
热门文章
- java计算机毕业设计老鹳窝旅游网源码+系统+数据库+lw文档+mybatis+运行部署
- java 获取上市公司基本信息 代码测试
- 金山WPS:云端协同 AI赋能 WPS树起了Office新四大件|企服三会系列报道
- 插画怎么构图?小白快速上手教程
- Odrive_0.5.5运行代码分析_(三)_GPIO详解
- 一个统计Word文档中行数的VBA例程
- lv双肩包尺寸对照表_lv双肩包mini尺寸对照表
- 怎样做一个企业网站建设规划书?
- Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)
- Django Admin 上传多张图片并显示缩略图