Unity text 表情和超链接解决方案。
其实github上已经有相应的实现,不过可能很久不维护存在部分问题。我的代码以下面为基础,进行了扩展,比如表情点击事件
源地址
https://github.com/coding2233/TextInlineSprite
测试代码
using System.Text;
using UnityEngine;
using MYTOOL.UI;
using MYTOOL.UI.Text;public class UILogin : UIBase
{public InlineText text;protected override void OnCreate(){}private void Start(){text.OnEmojiClick.AddListener((int id, string tag) =>{Debug.LogFormat($"{id} {tag}");});text.OnHrefClick.AddListener((int id, string link) =>{Debug.LogFormat($"{id} {link}");});StringBuilder stringBuilder = new StringBuilder();var spriteInfos = text.InlineInfo.SpriteGraphics;foreach (SpriteGraphic info in spriteInfos){var spriteAsset = info.SpriteAsset;var groupList = spriteAsset.SpriteGroupList;foreach (var item in groupList){stringBuilder.AppendFormat("[{0}#{1}]", spriteAsset.Id, item.Tag);}}text.text = stringBuilder.ToString();}
}
效果截图
直接使用文本的形式将表情显示处理,表情支持点击事件。就很方便做聊天表情那个界面。
点击表情有对应的点击回调,方便实现聊天表情相关的功能。