using System.Collections; using UnityEngine; public class PushTextShow : MonoBehaviour { public GameObject target; public float BigNum = 0.4f; //0 - 放大多少 public int BigFrame = 5; public float TanNum = 0.8f; //弹一弹的弧度 public int TanFrame = 5; //弹一弹的帧率 public float WaitTime = 1.5f;//展示的等待时间 public float XiaoShiFrame = 10;//消失的帧率 private void Awake() { if (target == null) target = this.gameObject; } void Start() { StartCoroutine(Ani()); } IEnumerator Ani() { //初始化 target.transform.localScale = Vector3.zero; float BigOff = (BigNum + 1) / BigFrame; //再放大 for (int i = 0; i < BigFrame; i++) { this.transform.localScale = new Vector3(target.transform.localScale.x + BigOff, target.transform.localScale.y + BigOff, target.transform.localScale.z); yield return new WaitForEndOfFrame(); } float TanOff = TanNum / TanFrame; //缩小放大弹一下 for (int i = 0; i < TanFrame; i++) { this.transform.localScale = new Vector3(target.transform.localScale.x - TanOff, target.transform.localScale.y - TanOff, target.transform.localScale.z); yield return new WaitForEndOfFrame(); } for (int i = 0; i < TanFrame; i++) { this.transform.localScale = new Vector3(target.transform.localScale.x + TanOff, target.transform.localScale.y + TanOff, target.transform.localScale.z); yield return new WaitForEndOfFrame(); } //先停留一下 yield return new WaitForSeconds(WaitTime); float XiaoShiOff = target.transform.localScale.x / XiaoShiFrame; //消失 for (int i = 0; i < XiaoShiFrame; i++) { this.transform.localScale = new Vector3(target.transform.localScale.x - XiaoShiOff, target.transform.localScale.y - XiaoShiOff, target.transform.localScale.z); yield return new WaitForEndOfFrame(); } //这里只是让效果重新播放 yield return new WaitForSeconds(0.2f); StartCoroutine(Ani()); } }