部分截取于度娘经验:https://jingyan.baidu.com/article/8ebacdf06017fc49f65cd507.html
基本思路:
1,DOTween插件(导入方法可参见下面百度经验)https://jingyan.baidu.com/article/2d5afd69325a7c85a2e28ee3.html
ac6eddc451da81cb87a5b9785e66d016082431c7.jpg
2,在场景中添加一个 Text,适当调整好大小
3,在工程中新建一个脚本 TextMovedByDOTween,双击脚本或者右建 Open C# Project 打开脚本进行编辑
以下是调整之后的代码(使浮动文字免于无限叠加向上飘到相机镜头之外)
ps,这个文字浮动有条件空格键触发,非自动模式。。。自动模式我还在研究中。。。
4,回到unity界面,在场景中添加 GameObject 空物体,把脚本挂载上去
5,把场景中的 Text 的颜色设置为透明
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class TextMovedByDOTween : MonoBehaviour
{
private Text text;
// Use this for initialization
void Start()
{
text = GameObject.Find("Text").GetComponent<Text>(); ;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
TextMoved(text);
}
}
private void TextMoved(Graphic graphic)
{
//获得Text的rectTransform,和颜色,并设置颜色微透明
RectTransform rect = graphic.rectTransform;
Color color = graphic.color;
graphic.color = new Color(color.r, color.g, color.b, 0);
//设置一个DOTween队列
Sequence textMoveSequence = DOTween.Sequence();
//设置Text移动和透明度的变化值
Tweener textMove01 = rect.DOMoveY(rect.position.y +50, 0.5f);
Tweener textMove02 = rect.DOMoveY(rect.position.y + 100, 0.5f);
Tweener textMove03= rect.DOMoveY(rect.position.y , 0.5f);
Tweener textColor01 = graphic.DOColor(new Color(color.r, color.g, color.b, 1), 0.5f);
Tweener textColor02 = graphic.DOColor(new Color(color.r, color.g, color.b, 0), 0.5f);
//Append 追加一个队列,Join 添加一个队列
//中间间隔一秒
//Append 再追加一个队列,再Join 添加一个队列
textMoveSequence.Append(textMove01);
textMoveSequence.Join(textColor01);
textMoveSequence.AppendInterval(0.6f);
textMoveSequence.Append(textMove02);
textMoveSequence.Join(textColor02);
textMoveSequence.Append(textMove03);
textMoveSequence.Join(textColor02);
}
}
——————————————
更新一下,之前每按次空格键在漂浮动画还没执行完毕,文字会在该位置无限向上叠加执行动画,所以我改了一下之间间隔时间参数,加快了字体动作频率,缺点么,,,,,自行体会把,,,代码如下:
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class TextMovedByDOTween : MonoBehaviour
{
private Text text;
// Use this for initialization
void Start()
{
text = GameObject.Find("Text").GetComponent<Text>(); ;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
TextMoved(text);
}
}
private void TextMoved(Graphic graphic)
{
//获得Text的rectTransform,和颜色,并设置颜色微透明
RectTransform rect = graphic.rectTransform;
Color color = graphic.color;
graphic.color = new Color(color.r, color.g, color.b, 0);
//设置一个DOTween队列
Sequence textMoveSequence = DOTween.Sequence();
//设置Text移动和透明度的变化值
Tweener textMove00 = rect.DOMoveY(rect.position.y, 0.4f);
Tweener textMove01 = rect.DOMoveY(rect.position.y +50, 0.2f);
Tweener textMove02 = rect.DOMoveY(rect.position.y + 100, 0.2f);//0.2f是每次浮动频率的间隔时间
Tweener textMove03= rect.DOMoveY(rect.position.y , 0);
Tweener textColor01 = graphic.DOColor(new Color(color.r, color.g, color.b, 1), 0.2f);
Tweener textColor02 = graphic.DOColor(new Color(color.r, color.g, color.b, 0), 0.2f);
//Append 追加一个队列,Join 添加一个队列
//中间间隔0.4秒
//Append 再追加一个队列,再Join 添加一个队列
textMoveSequence.Append(textMove01);
textMoveSequence.Join(textColor01);
textMoveSequence.AppendInterval(0.2f);
textMoveSequence.Append(textMove02);
textMoveSequence.Join(textColor02);
textMoveSequence.Append(textMove03);
textMoveSequence.Join(textColor02);
}
}
——————————————
补充!!!!!! 步骤2 创建的Text必须命名为“Text“,不然这个智障插件不仅会罢工还会把你的player搞成智障!!!!!
😊










网友评论