Unity UGUI图文混排源码(一)】的更多相关文章

这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章 Unity UGUI图文混排源码(二):http://blog.csdn.net/qq992817263/article/details/51112311 1.首先来一个好消息,在最新版本的图文混排中,终于搞定了<quad>占位乱跳的问题,如果是从图文二过来已有工程的同学,可以将InlieText组件的Align By Geometry勾选上,对齐几何体,然而看字面意思…
Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):http://blog.csdn.net/qq992817263/article/details/51112311 为了方便整理,申请了一个专栏,链接:Unity UGUI图文混排专栏 图文混排解决方案二: 通过继承Text组件来获取文字的UIVertex并得到他的位置,通过Text富文本的<quad…
Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):http://blog.csdn.net/qq992817263/article/details/51112311 我从一开始想到的图文混排的概念都是通过文字间的空隙去粘贴一张图片,这样确定图片前面文字的最后一个位置变成了最主要的参数,接下来就给出两种解决方案 首先,先发UGUI源码的一个链接,很多东西…
这里有同学建议在做聊天气泡时,可以更改为一张图集对应多个Text,这样能节省资源,不过我突然想到每个Text一个图集,可以随时更换图集,这样表情图更丰富一些,于是我就先将现有的聊天demo改为了聊天气泡 于是一张图集对应多个Text的功能,只有下次更新,哈哈 1.我更新了原来的表情文件,不过资源也来源网络 2.在图文三的时候,为了做动态表情,将索引改为了ID,这里我有将ID改为了name,代码的检测中只要包含了name的图片都会加在动态数组里 #region 解析动画标签 List<string…
图文混排更新到超链接这儿,好像也差不多了,不过就在最后一点,博主也表现得相当不专业,直接整合了山中双木林同学提供的超链接的解决方案,博主甚至没来得及细看就直接复制了,但感觉还是挺好用的. 博主已经将超链接的功能直接整合到了之前的InlineText和InlineSpriteText的两个脚本中 1.定义超链接的正则表达式和事件监听 #region 超链接 /// <summary> /// 超链接信息列表 /// </summary> private readonly List&l…
之前更新超链接的时候,忘了搭配实现一个下划线的功能,这篇文章就是来补上这一个功能,时间有点长,一方面没有很好的思路,一方面也没多少时间. 先在网上收集了一下下划线的实现操作,一种是在文本下再创建一个文本用来输入下划线,一种是在文本下再创建一个图片用来绘制下划线,这两种方式都相当容易理解,最开始都在考虑是否集成这两种方式,但是这里确实不适合应用到图文混排中,不断的生成资源,会大大地消耗性能. 最后,在参考前面的下划线的时候,想到只要自己将下划线的顶点数据获取到,更改为我们所需要的位置,添加到Tex…
继上一篇说的更新了一张图集对应多个Text的功能,为了节省资源嘛 这里,但是也没有舍弃之前的一个Text一个图集,因为我感觉应该两个都有用,于是我重新写了一个脚本 1.其实大体跟前面的都没变,解析标签,获取表情的相关数据,这里只是将绘制图片的功能,移植到SpriteGraphic上,本地增加了一个刷新图片绘制信息的函数. 麻烦的是去找到SpriteGraphic绘制图片,也是因为这个感觉有很大的潜在问题,不过基本能用,具体看脚本 using UnityEngine; using UnityEng…
感觉使用Unity之后总能看到各种各样解决混排的方案,只能说明Unity不够体恤下情啊.这篇文章主要讲一下个人在使用过程中方案选择和优化过程,已做记录.顺便提下,开源很多意味着坑,还是要开实际需求. 1. 方案选择 1 TextMeshPro Unity 最近公布收购了TextMeshPro并且免费开源给大家使用,估计还需要几个小版本才会完全融合到Unity中或者保持现在的状态.TextMeshPro支持效果丰富,兼容现在UI层级等,性能也可以满足移动端,但是很纠结的是: 现在的版本生成的字体库…
UGUI源码: https://bitbucket.org/Unity-Technologies/ui/downloads/?tab=tags 首先下载一份UGUI源码,这里我下载的版本是5.3.2f1.然后找到Text.cs,里面有方法OnPopulateMesh,这个方法会修改文字的顶点.而图文混排,涉及到顶点数据的修改.因此,我们的重点就是对这个方法进行修改,这里给出一个最简单的重写版本,它和普通的text是一样的.Text的渲染过程是由TextGenerator产生顶点数据,配合字体产生…
1.图文混排中的资源,主要是图片. 2.所谓的资源管理,可以分为资源对象池和资源加载这两部分.这里是为图文混排单独做一套资源管理,当然也可以改为调用项目中的资源管理. RichTextResourceManager.cs using UnityEngine; using System.Collections.Generic; using UnityEngine.UI; using System; #if UNITY_EDITOR using UnityEditor; #endif public…
参考链接: https://github.com/SylarLi/RichText/tree/master/Assets/Scripts 正则表达式: https://blog.csdn.net/lyh916/article/details/49201195 图文混排主要用于聊天,其实就是传输某种格式的字符串,然后解析这个字符串,生成表情文字等.图文混排的第一步,就是确定好格式,这里使用html的标签格式,对于代码中出现的start和end字段可以先忽略.标签格式如下: <material=un…
帧动画脚本: http://www.cnblogs.com/lyh916/p/9194823.html 这里的动态表情,我使用的是固定间隔去刷新Image上的Sprite来实现的,即帧动画.这里可以将帧动画当作一种新的资源,它与普通的图片的区别在于,挂上了一个帧动画脚本,并且在使用时,需要加载多张图片. 效果如下: 最后给出这个系列的代码: https://pan.baidu.com/s/1eHgYdccZwZw9uh9iIStHbg…
点击区域可以分成两部分来分析: 0.Rect 搜索api:Rect和Rect.Rect,可以知道: 在GUI和GUILayout中,Rect的原点在左上角,向右为x轴正方向,向下为y轴正方向: 除此之外,其他情况下Rect的原点在左下角,向右为x轴正方向,向上为y轴正方向. 1.区域的判定 a.图片的可点击区域:整张图片 b.文字的可点击区域:下划线上的文字 2.点击响应 计算出区域后,因为这个区域是局部坐标系的,再将点击坐标转换为text中的局部坐标,判定该坐标是否在区域内,即可完成点击响应.…
0.下划线标签 标签格式:<material=underline c=#ffffff h=1 n=*** p=***>blablabla...</material> material标签会在最后的渲染过程中被自动去除. 1.文字顶点分布 通过打印文字顶点,可以发现顶点是以text控件中的pivot为中心点排序的.如下图,以pivot为中心点建立坐标系,则从1到3,x轴逐渐递增:从1到7,y轴逐渐递减. 并且这些顶点坐标是局部坐标,相对于text中的pivot,无论怎样移动text,…
参考链接: http://www.cnblogs.com/leoin2012/p/7162099.html 0.图片标签和图片类 标签格式:<icon name=*** w=1 h=1 n=*** p=***/> RichTextImageInfo.cs using UnityEngine; public class RichTextImageInfo { public string name; //名字(路径) public Vector2 size; //宽高 public Vector2…
目前在unity实现图文混排的好像都是通过自定义字体然后在文本获取字符的位置,用图片替换掉图片标签,这样对于支持英文来说,并没有什么影响.然后对于中文来说就是一个相当麻烦的事了,毕竟图文混排多用于游戏聊天,这样就需要将中文的所有常用汉字都添加进去,想想都不怎么科学 于是我就想在ugui自带的Text组件的基础上,实现图文混排,花了一点时间,也算有点成果了 整理一下,实现图文混排的步骤: 准备了一些图片,并制作了一个asset文件,将所有图片的信息保存进去,方便调用 写了一个SpriteGraph…
iOS精选源码 高性能图文混排框架,构架顺滑的iOS应用. 使用OpenGLE覆盖阿尔法通道视频动画播放器视图. 可选最大日期截至当日日期的日期轮选器ChooseDatePicker 简单轻量的图片浏览器YCPhotoBrower 使用偏好设置.属性列表.归档解档保存数据.恢复数据 页面底部手势交互滚动UITableView 使用CoreAnimation来模拟iOS中的StackView. 盒子可以更具长宽高变化的动画 iOS优质博客 iOS导航栏使用总结 目录:一.设置导航栏样式二.自定义导…
创建一个新的Scene,并按 Unity插件之NGUI学习(2)创建UI Root. 准备工作,制作Font.如今Project窗体创建一个Font目录.然后从系统自带字体目录中选择自己须要的字体,我选择了黑体.然后拖到Font目录中去. 选择刚导入的字体. Font Size默认是16,只是网上看到过size16在IOS上显示太小.所以设置为30. 在菜单中选择NGUI->Open->Font Maker watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZX…
昨天参加一个面试,面试官让当场写一个类似于新闻列表的页面,文本数据和图片都从网络上获取,想起我还没写过ListView异步加载图片并实现图文混排效果的文章,so,今天就来写一下,介绍一下经验. ListView加载文本数据都是很简单的,即使是异步获取文本数据.但是异步加载图片就稍微有一点麻烦,既要获得一个比较好的用户体验,还要防止出现图片错位等各种不良BUG,其实要考虑的东西还是挺多的.好了,我们先来看一下我们今天要实现的一个效果图: 看起来似乎并不难,确实,我们今天的核心问题只有一个,就是怎么…
前言 本周一直在说Android多线程的那些事儿,本篇博客聊一聊Android开发中一个比较经典的案例,网络数据图文混排,本片博客的案例只涉及关于开启多线程访问网络数据,不涉及缓存的内容.众所周知,从网络上获取一段文本肯定要比获取一张张的图片要省时,所以一般如果是获取图片+文本的数据,会先开启一条线程获取文本数据,再从开启另外的线程来单独获取图片信息.本案例填充一个自定义的XML布局文件作为数据项,并使用ListView承载数据. 数据准备 本案例中的服务端数据以Json的形式传递,在服务端使用…
最近项目中需要实现一个评论带表情的功能,刚开始一切顺利,非常easy,突然有一天发现文字跟表情混排的时候,TextView中图文高度不一致,excuse...什么鬼,之前明明测试过图文混排,不存在这个问题啊,然后检查代码,没毛病啊, android:gravity="center_vertical" 也设置了啊,然后猛然发现一行代码:android:lineSpacingExtra="8sp",原来是设置了这个行间距导致的.知道问题出在哪了,就好解决了,度娘还是看源…
在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互通.有了这个协议之后,使用任何一个组织或者个人提供的即使通信服务,都能够无障碍的与其他的及时通信服务的用户进行交流.例如google 公司2005年推出的Google talk就是一款基于XMPP协议的即时通信软件.在前面的系列博文中,我们介绍了XMPP的详细使用(查看系列文章:http://www…
随着iOS越来越多表情键盘以及图文混排的需求,本文运用Swift3.0系统的实现其功能以及封装调用方法,写的不好,如有错误望各位提出宝贵意见,多谢 项目源码地址: 相关知识点都有标识 项目源码地址 废话不多说,先看效果 项目目录分为: EmoticonManager(表情管理类) EmoticonPackage(表情组) Emoticon(表情) LXREmoticonController(表情管理控制器) LXREmoticonCell(自定义cell) ViewController(控制器调…
参考: Laya图文混排 Laya的图文混排教程 编辑模式F9,增加laya.html.js库 在层级窗口右键,添加一个HtmlDivElement组件 大致的原理: 1. 例如输入框的字符串是 "大家好!很高兴认识大家!@1@", "@1@"为一个表情的代号.下图直接使用str当成输入框文字. 2. 操作str字符串,全局搜索"@1@",将该表情代号换成表情图片<img>的标签. 3. 将str字符串赋值给HTMLDivElemen…
几年前刚毕业.第一个游戏模块做的就是聊天.到如今.几个游戏写过几次聊天模块. 之前在4399做的<幻龙骑士>(又名<神骑士>),还有上周六刚上线的<疯狂的子弹>, 用的是同一套代码,聊天输入框没有图文混排,而是用符号取代,输出面板才有图文混排. 输出面板的图文混排因为内容没有键鼠操作.实现非常easy,不在本文讨论之列:当然本 文的代码中抽出一小部分就能够实现了.以上两款游戏没有加密,有兴趣的能够去弄来看看. <子弹>里面的键鼠.技能.射击.弹道搞得好累人啊…
CoreText的介绍 Core Text 是基于 iOS 3.2+ 和 OSX 10.5+ 的一种能够对文本格式和文本布局进行精细控制的文本引擎.它良好的结合了 UIKit 和 Core Graphics/Quartz: UIKit 的 UILabel 允许你通过在xIB 中简单的拖曳添加文本,但你不能改变文本的颜色和其中的单词. Core Graphics/Quartz几乎允许你做任何系统允许的事情,但你需要为每个字形计算位置,并画在屏幕上. Core Text 正结合了这两者!你可以完全控…
iOS7以后,因为TextKit的强大,可以用NSAttributedString很方便的实现图文混排(主要是利用了NSTextAttachment). 关于Textkit的牛逼之处,可以参考objcio上的文章(https://objccn.io/issue-5-1/) 我用NSAttributedString仿写了一个知乎的输入框(低仿,就是有个功能而已),效果如图: demo在这里:(https://github.com/Phelthas/TEST_XMLCommon   的第四个)  …
常见的在一些微博微信中可以看见一段文字中有不同的字体,字体有不同的颜色,并且可能会有一些笑脸之类的表情,这些可以通过图文混排做到. 图文混排可以通过WebView和CoreText做到,其他还有别的方法暂不去讲,我也还没学到. WebView相对简单,直接将链接load过来就可以了,但对设备要求较高. CoreText相对底层,也就相对高效,也就相对复杂. 举个简单的例子: 例如设置一个UILab,要求其中显示“hello world”: UILabel *label = [[UILabel a…
原文链接 图文混排也是FLASH里一个很古老的话题了,我们不像美国佬那样游戏里面聊天框就是聊天框,全是文字干干净净,也不像日本人发明了并且频繁地使用颜文字.不管是做论坛.做游戏,必定要实现的一点就是带表情对话框. 闲话扯多了,直接进入正题把. 1.TextField 首先,使用TextField的情况下 要想在使用TextField的前提下实现图文混排,一般比较流行的有2种实现方法: 第一种是使用HTML标签,textfield支持简单的HTML标签,比如<img>.<a>等等,在…
不少人为了让 Div 图文混排的图片可以居中,给 IMG 套各式各样的 SPAN.DIV.LI 等等,以便于使用 text-align来进行居中. <div>图文混排 <br> <span style="text-align:center"><img src="http://www.baidu.com/img/baidu_jgylogo3.gif"></span> </div> 而对于 DIV…