using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; public class HomeMessageController : MonoBehaviour { // Start is called before the first frame update float startX; private void Awake() { startX = transform.Find("TextContainer/Content").localPosition.x; } void Start() { } float timer = 2; public float? textWidth = null; private bool isAnimated = false; public void Initial() { transform.Find("TextContainer/Content").localPosition = new Vector2(startX, transform.Find("TextContainer/Content").localPosition.y); isAnimated = false; } float playtime = 0; #if UNITY_STANDALONE_WIN float maxWidth = 370; #else float maxWidth = 180; #endif // Update is called once per frame void Update() { timer -= Time.deltaTime; if (timer <= 0) { //do if (textWidth.HasValue && textWidth > maxWidth && !isAnimated) { isAnimated = true; var offset = textWidth.Value - maxWidth; var game = transform.Find("TextContainer/Content"); var v = 20 / 0.3f; playtime = offset / v; //匀速播放 game.DOLocalMoveX(startX - offset, playtime).onComplete = () => Invoke("returnAni", 1.5f); } timer += 3; } } void returnAni() { transform.Find("TextContainer/Content").DOLocalMoveX(startX, playtime); } }