NGUI聊天信息中插入动态表情

在聊天系统中,为了增强表现力,通常需要插入动态表情。对于使用NGUI的情况,由于其内置表情系统的限制,需要寻找其他方法。本文介绍了两种实现NGUI聊天中动态表情的方法:一是利用NGUI的Emoji系统结合代码动态更换文字;二是自定义脚本替换文字为动态表情。第一种方法繁琐且不支持动态字体,第二种方法自由度高且能配合动态字体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

聊天系统中难免需要加入动态表情来增加表现力,而使用NGUI中自带的表情系统有些局限:一是只能使用静态表情,二是需要制作字体图集,不能使用动态图集。所以需要另外寻找方法实现聊天文字中插入动态表情的效果。
经过寻找,找到两种实现方法:
一种是继续使用NGUI的Emoji系统,然后同一个表情的每一帧作为一个符号记录到字体图集中,然后用代码动态更换文字,实现表情的动态变化,类似下图:
这里写图片描述
其中*1,*2,*3,*4分别是一个表情的4帧,然后用脚本动态将输入的文字内容改变来。
这种方法麻烦的地方在于需要手动将每一帧表情输入监视器(当然可以写批处理解决),还需要记录每个表情用了几张图片,对应哪几个文字。需要占用一些字符。最重要的问题是不支持动态字体。

另外一种方法是不使用NGUI自带的表情系统,自己编写脚本将对应表情的文字替换成空格,在空格部分放上自己做的动态表情。
这种方法自由度比较大,而且还可以使用动态字体。搜索到了一篇文章:原文地址
原文中只贴了核心代码,我这边修改了一些,将完整的代码贴出来,可以直接使用,注意m_chatInput之类的引用我是在编辑器中设置的。里面还用到了上一篇文章中的动态表情脚本:链接地址

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

public class ChatTest : MonoBehaviour 
{
    public GameObject button;
    //输入框
    public UIInput m_chatInput;
    //文字模板
    public GameObject textObj;
    //表情模板
    public GameObject emojiObj;
    private string space = "     ";
    //标准行宽度
    private float BASELINEWIDTH = 350;
    //显示的内容
    private List<string> lineList;
    //表情位置
    private List<Vector3> eList;
    //某行是否有表情
    private
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值