本文正在参加「金石计划 . 瓜分6万现金大奖」
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
欢迎关注公众号【空名先生】获取更多资源和交流!
👉前提
这是小空坚持写的Unity新手向系列,欢迎品尝。
小空为了方便更多的人(新手)看明白,使用的汉字,真实项目尽量使用英文规则昂。
新手(√√√)
大佬(√)
👉实践过程
😜空格问题
因为文本有自动换行,所以可能造成这个问题,就是换行了,因为Unity是国外英语开发的,所以空格单词放不下换行还算合理(单词没那么长),而中文一句话可能不短,这时候换行就不合适了。
解决这个问题需要“\u3000”字符来替换,直接在组件上输入时,将输入法调成全角然后输入空格即可实现,如果是代码中修改,获取文本然后利用字符串替换即可(字符串.Replace(" ", "\u3000");)
😜打字特效
如果你用了DOTween插件,那么很方便:
public Text yourText;
//获取Text组件
//您要显示文本内容
string temp_content = "这是一个逐字出现的效果,利用了DOTween插件实现的";
yourText.DOText(temp_content, 6);
//带回调的方式
//mText.DOText(temp_content, 6).OnComplete(()=> {
// Debug.Log("逐字显示完成的回调");
//});
//添加Ease枚举中设定的缓动动画
//mText.DOText(temp_content, 6).SetEase(Ease.InBack).OnComplete(() => {
// Debug.Log("逐字显示完成的回调");
//});
如果是其他方式,可以在Update中不断取字符串之后给text赋值即可。
😜轮廓和阴影
只需要继承Unity内置的Outlinse脚本即可,只有三个个属性很简单,Effect Color表示轮廓颜色,Effect Distance表示阴影偏移位置,Use Graphic Alpha表示是否受透明度影响,默认是勾选的,勾选文本的透明度变化的话,轮廓阴影也对应变化,进而保持一个良好的效果,不勾选则不变化。
😜渐变
渐变需要单独自定义脚本实现,实现眼里是继承BaseMeshEffect,覆写ModifyMesh,拿到当前的矩阵,然后利用颜色插值Lerp运算来实现。
/// <summary>
/// 渐变字体,并且添加到Inspector的快捷Add Component中
/// </summary>
[AddComponentMenu("UI/Effects/TextGradien")]
public class TextGradien : BaseMeshEffect
{
public Color32 topColor = Color.white;
public Color32 bottomColor = Color.black;
public bool useGraphicAlpha = true;
public override void ModifyMesh(VertexHelper vh)
{
if (!IsActive())
{
return;
}
var count = vh.currentVertCount;
if (count == 0)
return;
var vertexs = new List<UIVertex>();
for (var i = 0; i < count; i++)
{
var vertex = new UIVertex();
vh.PopulateUIVertex(ref vertex, i);
vertexs.Add(vertex);
}
var topY = vertexs[0].position.y;
var bottomY = vertexs[0].position.y;
for (var i = 1; i < count; i++)
{
var y = vertexs[i].position.y;
if (y > topY)
{
topY = y;
}
else if (y < bottomY)
{
bottomY = y;
}
}
var height = topY - bottomY;
for (var i = 0; i < count; i++)
{
var vertex = vertexs[i];
var color = Color32.Lerp(bottomColor, topColor, (vertex.position.y - bottomY) / height);
vertex.color = color;
vh.SetUIVertex(vertex, i);
}
}
}
挂载在Text上即可。
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
本文正在参加「金石计划 . 瓜分6万现金大奖」