| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 | 
							- using UnityEngine;
 
- using System.Collections;
 
- namespace TMPro.Examples
 
- {
 
-     public class TextMeshProFloatingText : MonoBehaviour
 
-     {
 
-         public Font TheFont;
 
-         private GameObject m_floatingText;
 
-         private TextMeshPro m_textMeshPro;
 
-         private TextMesh m_textMesh;
 
-         private Transform m_transform;
 
-         private Transform m_floatingText_Transform;
 
-         private Transform m_cameraTransform;
 
-         Vector3 lastPOS = Vector3.zero;
 
-         Quaternion lastRotation = Quaternion.identity;
 
-         public int SpawnType;
 
-         public bool IsTextObjectScaleStatic;
 
-         //private int m_frame = 0;
 
-         static WaitForEndOfFrame k_WaitForEndOfFrame = new WaitForEndOfFrame();
 
-         static WaitForSeconds[] k_WaitForSecondsRandom = new WaitForSeconds[]
 
-         {
 
-             new WaitForSeconds(0.05f), new WaitForSeconds(0.1f), new WaitForSeconds(0.15f), new WaitForSeconds(0.2f), new WaitForSeconds(0.25f),
 
-             new WaitForSeconds(0.3f), new WaitForSeconds(0.35f), new WaitForSeconds(0.4f), new WaitForSeconds(0.45f), new WaitForSeconds(0.5f),
 
-             new WaitForSeconds(0.55f), new WaitForSeconds(0.6f), new WaitForSeconds(0.65f), new WaitForSeconds(0.7f), new WaitForSeconds(0.75f),
 
-             new WaitForSeconds(0.8f), new WaitForSeconds(0.85f), new WaitForSeconds(0.9f), new WaitForSeconds(0.95f), new WaitForSeconds(1.0f),
 
-         };
 
-         void Awake()
 
-         {
 
-             m_transform = transform;
 
-             m_floatingText = new GameObject(this.name + " floating text");
 
-             // Reference to Transform is lost when TMP component is added since it replaces it by a RectTransform.
 
-             //m_floatingText_Transform = m_floatingText.transform;
 
-             //m_floatingText_Transform.position = m_transform.position + new Vector3(0, 15f, 0);
 
-             m_cameraTransform = Camera.main.transform;
 
-         }
 
-         void Start()
 
-         {
 
-             if (SpawnType == 0)
 
-             {
 
-                 // TextMesh Pro Implementation
 
-                 m_textMeshPro = m_floatingText.AddComponent<TextMeshPro>();
 
-                 m_textMeshPro.rectTransform.sizeDelta = new Vector2(3, 3);
 
-                 m_floatingText_Transform = m_floatingText.transform;
 
-                 m_floatingText_Transform.position = m_transform.position + new Vector3(0, 15f, 0);
 
-                 //m_textMeshPro.fontAsset = Resources.Load("Fonts & Materials/JOKERMAN SDF", typeof(TextMeshProFont)) as TextMeshProFont; // User should only provide a string to the resource.
 
-                 //m_textMeshPro.fontSharedMaterial = Resources.Load("Fonts & Materials/LiberationSans SDF", typeof(Material)) as Material;
 
-                 m_textMeshPro.alignment = TextAlignmentOptions.Center;
 
-                 m_textMeshPro.color = new Color32((byte)Random.Range(0, 255), (byte)Random.Range(0, 255), (byte)Random.Range(0, 255), 255);
 
-                 m_textMeshPro.fontSize = 24;
 
-                 //m_textMeshPro.enableExtraPadding = true;
 
-                 //m_textMeshPro.enableShadows = false;
 
-                 m_textMeshPro.enableKerning = false;
 
-                 m_textMeshPro.text = string.Empty;
 
-                 m_textMeshPro.isTextObjectScaleStatic = IsTextObjectScaleStatic;
 
-                 StartCoroutine(DisplayTextMeshProFloatingText());
 
-             }
 
-             else if (SpawnType == 1)
 
-             {
 
-                 //Debug.Log("Spawning TextMesh Objects.");
 
-                 m_floatingText_Transform = m_floatingText.transform;
 
-                 m_floatingText_Transform.position = m_transform.position + new Vector3(0, 15f, 0);
 
-                 m_textMesh = m_floatingText.AddComponent<TextMesh>();
 
-                 m_textMesh.font = Resources.Load<Font>("Fonts/ARIAL");
 
-                 m_textMesh.GetComponent<Renderer>().sharedMaterial = m_textMesh.font.material;
 
-                 m_textMesh.color = new Color32((byte)Random.Range(0, 255), (byte)Random.Range(0, 255), (byte)Random.Range(0, 255), 255);
 
-                 m_textMesh.anchor = TextAnchor.LowerCenter;
 
-                 m_textMesh.fontSize = 24;
 
-                 StartCoroutine(DisplayTextMeshFloatingText());
 
-             }
 
-             else if (SpawnType == 2)
 
-             {
 
-             }
 
-         }
 
-         //void Update()
 
-         //{
 
-         //    if (SpawnType == 0)
 
-         //    {
 
-         //        m_textMeshPro.SetText("{0}", m_frame);
 
-         //    }
 
-         //    else
 
-         //    {
 
-         //        m_textMesh.text = m_frame.ToString();
 
-         //    }
 
-         //    m_frame = (m_frame + 1) % 1000;
 
-         //}
 
-         public IEnumerator DisplayTextMeshProFloatingText()
 
-         {
 
-             float CountDuration = 2.0f; // How long is the countdown alive.
 
-             float starting_Count = Random.Range(5f, 20f); // At what number is the counter starting at.
 
-             float current_Count = starting_Count;
 
-             Vector3 start_pos = m_floatingText_Transform.position;
 
-             Color32 start_color = m_textMeshPro.color;
 
-             float alpha = 255;
 
-             int int_counter = 0;
 
-             float fadeDuration = 3 / starting_Count * CountDuration;
 
-             while (current_Count > 0)
 
-             {
 
-                 current_Count -= (Time.deltaTime / CountDuration) * starting_Count;
 
-                 if (current_Count <= 3)
 
-                 {
 
-                     //Debug.Log("Fading Counter ... " + current_Count.ToString("f2"));
 
-                     alpha = Mathf.Clamp(alpha - (Time.deltaTime / fadeDuration) * 255, 0, 255);
 
-                 }
 
-                 int_counter = (int)current_Count;
 
-                 m_textMeshPro.text = int_counter.ToString();
 
-                 //m_textMeshPro.SetText("{0}", (int)current_Count);
 
-                 m_textMeshPro.color = new Color32(start_color.r, start_color.g, start_color.b, (byte)alpha);
 
-                 // Move the floating text upward each update
 
-                 m_floatingText_Transform.position += new Vector3(0, starting_Count * Time.deltaTime, 0);
 
-                 // Align floating text perpendicular to Camera.
 
-                 if (!lastPOS.Compare(m_cameraTransform.position, 1000) || !lastRotation.Compare(m_cameraTransform.rotation, 1000))
 
-                 {
 
-                     lastPOS = m_cameraTransform.position;
 
-                     lastRotation = m_cameraTransform.rotation;
 
-                     m_floatingText_Transform.rotation = lastRotation;
 
-                     Vector3 dir = m_transform.position - lastPOS;
 
-                     m_transform.forward = new Vector3(dir.x, 0, dir.z);
 
-                 }
 
-                 yield return k_WaitForEndOfFrame;
 
-             }
 
-             //Debug.Log("Done Counting down.");
 
-             yield return k_WaitForSecondsRandom[Random.Range(0, 19)];
 
-             m_floatingText_Transform.position = start_pos;
 
-             StartCoroutine(DisplayTextMeshProFloatingText());
 
-         }
 
-         public IEnumerator DisplayTextMeshFloatingText()
 
-         {
 
-             float CountDuration = 2.0f; // How long is the countdown alive.
 
-             float starting_Count = Random.Range(5f, 20f); // At what number is the counter starting at.
 
-             float current_Count = starting_Count;
 
-             Vector3 start_pos = m_floatingText_Transform.position;
 
-             Color32 start_color = m_textMesh.color;
 
-             float alpha = 255;
 
-             int int_counter = 0;
 
-             float fadeDuration = 3 / starting_Count * CountDuration;
 
-             while (current_Count > 0)
 
-             {
 
-                 current_Count -= (Time.deltaTime / CountDuration) * starting_Count;
 
-                 if (current_Count <= 3)
 
-                 {
 
-                     //Debug.Log("Fading Counter ... " + current_Count.ToString("f2"));
 
-                     alpha = Mathf.Clamp(alpha - (Time.deltaTime / fadeDuration) * 255, 0, 255);
 
-                 }
 
-                 int_counter = (int)current_Count;
 
-                 m_textMesh.text = int_counter.ToString();
 
-                 //Debug.Log("Current Count:" + current_Count.ToString("f2"));
 
-                 m_textMesh.color = new Color32(start_color.r, start_color.g, start_color.b, (byte)alpha);
 
-                 // Move the floating text upward each update
 
-                 m_floatingText_Transform.position += new Vector3(0, starting_Count * Time.deltaTime, 0);
 
-                 // Align floating text perpendicular to Camera.
 
-                 if (!lastPOS.Compare(m_cameraTransform.position, 1000) || !lastRotation.Compare(m_cameraTransform.rotation, 1000))
 
-                 {
 
-                     lastPOS = m_cameraTransform.position;
 
-                     lastRotation = m_cameraTransform.rotation;
 
-                     m_floatingText_Transform.rotation = lastRotation;
 
-                     Vector3 dir = m_transform.position - lastPOS;
 
-                     m_transform.forward = new Vector3(dir.x, 0, dir.z);
 
-                 }
 
-                 yield return k_WaitForEndOfFrame;
 
-             }
 
-             //Debug.Log("Done Counting down.");
 
-             yield return k_WaitForSecondsRandom[Random.Range(0, 20)];
 
-             m_floatingText_Transform.position = start_pos;
 
-             StartCoroutine(DisplayTextMeshFloatingText());
 
-         }
 
-     }
 
- }
 
 
  |