using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class LongMessageScript : MonoBehaviour { // Start is called before the first frame update float startX; private void Awake() { startX = transform.Find("TextContainer/Content").localPosition.x; #if (UNITY_ANDROID || UNITY_IOS) UIManager.AddEvent(transform.Find("BtnClose").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b => { gameObject.SetActive(false); }); #endif } void Start() { } float timer = 2; public float? textWidth = null; private bool isAnimated = false; public void Initial(string txt) { var txtTransform = transform.Find("TextContainer/Content"); txtTransform.GetComponent().text = txt; LayoutRebuilder.ForceRebuildLayoutImmediate(txtTransform.GetComponent()); txtTransform.localPosition = new Vector2(startX + maxWidth, transform.Find("TextContainer/Content").localPosition.y); isAnimated = false; timer = 2; } float playtime = 0; #if UNITY_STANDALONE_WIN float maxWidth = 1087; #else float maxWidth = 350; #endif // Update is called once per frame void Update() { timer -= Time.deltaTime; if (timer <= 0) { var width = transform.Find("TextContainer/Content").GetComponent().sizeDelta.x; if (textWidth != width) { this.textWidth = width; } //do if (textWidth.HasValue) { var offset = textWidth.Value; var game = transform.Find("TextContainer/Content"); var v = 20 / 0.3f; playtime = offset / v; //匀速播放 game.DOLocalMoveX(startX - offset, playtime).onComplete = () => { var txtTransform = transform.Find("TextContainer/Content"); txtTransform.localPosition = new Vector2(startX + maxWidth, transform.Find("TextContainer/Content").localPosition.y); }; } timer += (playtime + 0.5f); } } void returnAni() { var txtTransform = transform.Find("TextContainer/Content"); txtTransform.localPosition = new Vector2(startX + maxWidth, transform.Find("TextContainer/Content").localPosition.y); //transform.Find("TextContainer/Content").DOLocalMoveX(startX, playtime); } }