using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; [DisallowMultipleComponent] [RequireComponent(typeof(Text))] public class TypeWriterEffect:MonoBehaviour { [SerializeField] [Range(0,1)] float m_Speed; public float speed { get { return m_Speed; } } [SerializeField] [Range(0.05f,5.0f)] float m_Interval; public float interval { get { return m_Interval; } } float m_Progresss = 0f; public float progress { get { return m_Progresss; } set { m_Progresss = Mathf.Clamp01(value); if(material != null) { material.SetFloat("_FillAmount",m_Progresss); } } } Text m_Text; public Text text { get { return m_Text ?? (m_Text = this.GetComponent()); } } Material material { get { return text.material; } } float timer = 0f; void OnEnable() { timer = 0f; progress = 0f; } public void StartTypeWriter(float _progress) { progress = _progress; timer = 0f; } void LateUpdate() { if(progress >= 1f) { return; } timer += Time.deltaTime; if(timer > interval) { timer = 0; progress += speed; } } }