Unity之文字提示动画

举报
爱上游戏开发 发表于 2022/07/01 22:20:54 2022/07/01
【摘要】 推荐阅读:  我的CSDN 我的博客园 QQ群:704621321       在游...

推荐阅读:

      在游戏中,玩家进行了某种操作,往往需要给玩家一种提示,以告诉玩家操作结果:成功或失败提示。用于提示的的方式可以是弹框,也可以是文字渐隐。弹框就是显示一些信息,并带有确定/取消按钮等。文字渐隐就是显示文本,上漂并逐渐隐藏,直到消失。此过程往往只需要1秒左右。

今天就来和大家分享一下文字提示的实现。
(1)首先新建一个文本,用于控制文字的动画的实现:
主要思想:
      定义公共变量颜色和文字内容,方便在编辑器中修改;
      声明文本组件,为其指定文本内容,颜色,初始化位置;
      声明一个浮点数变量,用于控制文字动画的时间。
      在Update中对时间–,判断<0? 结束文字动画:减少透明度,向上移动

/**********
*@author:shirln(博客地址:https://blog.csdn.net/shirln)
*@data:2019.7.29
*@fun:文本提示动画
*/
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class FlyText : MonoBehaviour
{

    public Color color;//文字的颜色
    public string content;//文本内容
    Text t;//Text组件

    void Start()
    {
        t = transform.GetComponent<Text>();
        t.text = content;//设置组件
        t.color = color;
        t.rectTransform.anchoredPosition = new Vector2(t.rectTransform.anchoredPosition.x, t.rectTransform.anchoredPosition.y + 30);
    }

    float fadeTimer = 1;
    void Update()
    {
        fadeTimer -= Time.deltaTime;
        t.color = new Color(color.r, color.g, color.b, fadeTimer);
        t.rectTransform.anchoredPosition = new Vector2(t.rectTransform.anchoredPosition.x, t.rectTransform.anchoredPosition.y + (1 - fadeTimer));
        if (fadeTimer < 0)
        {
            GameObject.Destroy(this.gameObject);
        }
    }

}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

(2)创建一个游戏对象,为其添加Text组件,按需求设置,添加上述FlyText 脚本。保存在Resources文件夹下的Prefabs/Text_FlyText。
(3)该预制的使用方法:
      在需要文字提示的脚本中添加一个flyText方法,用于实例化预制,并转换为GameObject,设置父物体,获取上述FlyText 脚本组件,为其指定颜色和文本内容。

/**********
*@author:shirln(博客地址:https://blog.csdn.net/shirln)
*@data:2019.7.29
*@fun:获取文字动画脚本,为其指定信息
*/
 void flyText(Vector3 pos,Color color,string content)
    {
        GameObject go = Instantiate(Resources.Load<GameObject>("Prefabs/Text_FlyText"), pos, Quaternion.identity) as GameObject;
        go.transform.SetParent(GameObject.Find("Canvas").transform);
        FlyText ft = go.GetComponent<FlyText>();
        ft.color = color;
        ft.content = content;
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

(4)调用flyText方法:

flyText(new Vector3(0, 0, 0), new Color(1, 0, 0, 1), "文字提示内容");

  
 
  • 1

例如:我需要在游戏开始界面,点击开始按钮时提示文字“进入游戏”

/**********
*@author:shirln(博客地址:https://blog.csdn.net/shirln)
*@data:2019.7.29
*@fun:具体调用方法
*/
using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;

public class StartScene : MonoBehaviour {

    public void StartGame()
    {
        flyText(new Vector3(0, 0, 0), new Color(1, 0, 0, 1), "文字提示内容");
    }


     void flyText(Vector3 pos,Color color,string content)
    {
        GameObject go = Instantiate(Resources.Load<GameObject>("Prefabs/Text_FlyText"), pos, Quaternion.identity) as GameObject;
        go.transform.SetParent(GameObject.Find("Canvas").transform);
        FlyText ft = go.GetComponent<FlyText>();
        ft.color = color;
        ft.content = content;
    }

}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

文章来源: unity3d.blog.csdn.net,作者:爱上游戏开发,版权归原作者所有,如需转载,请联系作者。

原文链接:unity3d.blog.csdn.net/article/details/97624992

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。