123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- public class Trophy_UI : MonoBehaviour
- {
- public static void Trophy_Start(string para)
- {
- if (Trophy_UI.m_Trophy_Text == null)
- {
- Trophy_UI.m_Trophy_Text = new List<string>();
- }
- if (!Trophy_UI.m_Now_DisplayUI)
- {
- GameObject now_DisplayUI = Resources.Load<GameObject>("Prefab/TrophyGet_UI");
- Trophy_UI.m_Now_DisplayUI = now_DisplayUI;
- Trophy_UI.m_Now_DisplayUI = UnityEngine.Object.Instantiate<GameObject>(Trophy_UI.m_Now_DisplayUI);
- Trophy_UI.m_Now_DisplayUI.GetComponent<Trophy_UI>().Initialize(para);
- }
- Trophy_UI.m_Trophy_Text.Add(para);
- }
- private void Initialize(string val)
- {
- this.m_All_Text_Rect = new Dictionary<Text, RectTransform>();
- this.m_Use_String = val;
- this.m_All_LineCount = this.m_Use_String.Length / this.m_Line_Count;
- base.StartCoroutine(this.UI_Animation());
- }
- private void Set_Camera_Forward(RectTransform rect)
- {
- Vector3 position = GameMain.Instance.MainCamera.GetRealHeadTransform().position;
- Vector3 a = GameMain.Instance.MainCamera.GetRealHeadTransform().TransformDirection(Vector3.forward);
- Vector3 vector = GameMain.Instance.MainCamera.GetRealHeadTransform().TransformDirection(Vector3.down);
- vector.x = 0f;
- rect.position = position + a * this.m_Forward_Length + vector.normalized * this.m_Down_Length;
- Vector3 eulerAngles = GameMain.Instance.MainCamera.GetRealHeadTransform().eulerAngles;
- rect.eulerAngles = new Vector3(eulerAngles.x, eulerAngles.y, 0f);
- rect.localScale = Vector3.one;
- Vector2 vector2 = Vector2.one * 0.5f;
- rect.pivot = vector2;
- vector2 = vector2;
- rect.anchorMax = vector2;
- rect.anchorMin = vector2;
- rect.sizeDelta = Vector2.one * 100f;
- base.GetComponent<CanvasScaler>().dynamicPixelsPerUnit = 5f;
- }
- private void Set_Text_Pos(ref List<Vector3> first_pos, ref List<Vector3> end_pos, RectTransform bace)
- {
- int num = 0;
- foreach (char c in this.m_Use_String)
- {
- int num2 = num / this.m_Line_Count;
- Vector3 zero = Vector3.zero;
- GameObject gameObject = new GameObject("Text", new Type[]
- {
- typeof(RectTransform),
- typeof(CanvasRenderer),
- typeof(Text)
- });
- gameObject.layer = base.gameObject.layer;
- RectTransform component = gameObject.GetComponent<RectTransform>();
- component.SetParent(base.transform);
- Text component2 = gameObject.GetComponent<Text>();
- component2.text = c.ToString();
- component2.font = Resources.Load<Font>("Font/Day_Display_UI_Font");
- component2.color = this.m_Text_Col;
- component2.alignment = TextAnchor.MiddleCenter;
- component.sizeDelta = Vector2.one * 100f;
- component.localEulerAngles = Vector3.zero;
- gameObject.AddComponent<Outline>();
- Color outline_Col = this.m_Outline_Col;
- outline_Col.a = this.m_Outline_Alpha;
- gameObject.GetComponent<Outline>().effectColor = outline_Col;
- if (GameMain.Instance.VRDeviceTypeID == GameMain.VRDeviceType.NON)
- {
- gameObject.GetComponent<Outline>().effectDistance = Vector2.one * this.m_2D_Outline_Size;
- component2.fontSize = this.m_2D_Text_Size;
- RectTransform rectTransform = component;
- Vector2 vector = Vector2.up;
- component.anchorMax = vector;
- rectTransform.anchorMin = vector;
- component.pivot = Vector2.zero;
- component.localScale = Vector3.one;
- float x = (float)(num % this.m_Line_Count) * this.m_2D_Delta_Size.y - bace.localPosition.x;
- float y = bace.localPosition.y + (float)(num % this.m_Line_Count + this.m_All_LineCount - num2) * this.m_2D_Delta_Size.y;
- component.localPosition = new Vector3(x, y, 0f);
- zero = new Vector3(x, -this.m_2D_Down_Length + bace.localPosition.y, 0f);
- zero.y -= (float)num2 * this.m_2D_Delta_Size.y;
- }
- else
- {
- gameObject.GetComponent<Outline>().effectDistance = Vector2.one * this.m_Outline_Size;
- component.localScale = Vector3.one * 0.01f;
- component2.fontSize = this.m_Text_Size;
- component2.alignment = TextAnchor.MiddleCenter;
- RectTransform rectTransform2 = component;
- Vector2 vector = Vector2.one * 0.5f;
- component.pivot = vector;
- vector = vector;
- component.anchorMax = vector;
- rectTransform2.anchorMin = vector;
- float x = (float)(num % this.m_Line_Count) * this.m_Delta_Size.x * 0.01f + this.m_Width_Length;
- float y = (float)(-(float)num2) * this.m_Delta_Size.y * 0.01f;
- component.localPosition = new Vector3(x, y, 0f);
- zero = new Vector3(-(this.m_Width_Length + (float)Mathf.Abs(this.m_Line_Count - (num % this.m_Line_Count + 1)) * this.m_Delta_Size.x * 0.01f), y, 0f);
- }
- first_pos.Add(component.localPosition);
- end_pos.Add(zero);
- this.m_All_Text_Rect.Add(component2, component);
- if (c == '\n')
- {
- num += this.m_Line_Count - num % this.m_Line_Count;
- }
- else
- {
- num++;
- }
- }
- }
- private void Set_Next_UI()
- {
- Trophy_UI.m_Trophy_Text.RemoveAt(0);
- if (Trophy_UI.m_Trophy_Text.Count != 0)
- {
- GameObject gameObject = Resources.Load<GameObject>("Prefab/TrophyGet_UI");
- gameObject = UnityEngine.Object.Instantiate<GameObject>(gameObject);
- gameObject.GetComponent<Trophy_UI>().Initialize(Trophy_UI.m_Trophy_Text[0]);
- Trophy_UI.m_Now_DisplayUI = gameObject;
- }
- else
- {
- Trophy_UI.m_Now_DisplayUI = null;
- }
- UnityEngine.Object.Destroy(base.gameObject);
- }
- private IEnumerator UI_Animation()
- {
- RectTransform my_rect = null;
- if (GameMain.Instance.VRDeviceTypeID == GameMain.VRDeviceType.NON)
- {
- yield return null;
- my_rect = base.GetComponent<RectTransform>();
- }
- else
- {
- my_rect = base.GetComponent<RectTransform>();
- this.Set_Camera_Forward(my_rect);
- base.GetComponent<Canvas>().renderMode = RenderMode.WorldSpace;
- base.GetComponent<Canvas>().sortingOrder = 4;
- }
- List<Vector3> start_pos = new List<Vector3>();
- List<Vector3> end_pos = new List<Vector3>();
- this.Set_Text_Pos(ref start_pos, ref end_pos, my_rect);
- float timer = 0f;
- GameMain.Instance.SoundMgr.PlaySe("SE015.ogg", false);
- for (;;)
- {
- timer += Time.deltaTime;
- int count = 0;
- int text_no = 0;
- float all_anime_time = 0f;
- if (GameMain.Instance.VRDeviceTypeID == GameMain.VRDeviceType.NON)
- {
- all_anime_time = this.m_Anime_Bace + this.m_Anime_Lag * (float)(this.m_All_Text_Rect.Count - 1);
- }
- else
- {
- all_anime_time = this.m_VR_AnimeTime;
- }
- foreach (KeyValuePair<Text, RectTransform> keyValuePair in this.m_All_Text_Rect)
- {
- int num = count / this.m_Line_Count;
- float num2;
- if (GameMain.Instance.VRDeviceTypeID == GameMain.VRDeviceType.NON)
- {
- num2 = this.m_Anime_Bace + (float)(count % this.m_Line_Count + this.m_All_LineCount - num) * this.m_Anime_Lag;
- }
- else
- {
- num2 = this.m_VR_AnimeTime;
- }
- if (timer <= num2)
- {
- float num3 = 90f * (timer / num2);
- float num4 = Mathf.Sin(0.0174532924f * num3);
- keyValuePair.Value.localPosition = start_pos[text_no] * (1f - num4) + end_pos[text_no] * num4;
- }
- if (keyValuePair.Key.text == "\n")
- {
- count += this.m_Line_Count - count % this.m_Line_Count;
- }
- else
- {
- count++;
- }
- text_no++;
- }
- if (timer >= all_anime_time)
- {
- break;
- }
- yield return null;
- }
- yield return new WaitForSeconds(this.m_Wait_Time);
- base.StartCoroutine(this.Fade_Out());
- yield break;
- yield break;
- }
- private IEnumerator Fade_Out()
- {
- Color set_color = this.m_Text_Col;
- float timer = 0f;
- for (;;)
- {
- timer += Time.deltaTime;
- set_color.a = 1f - timer / this.m_Fade_Time;
- foreach (Text text in this.m_All_Text_Rect.Keys)
- {
- text.color = set_color;
- }
- if (timer >= this.m_Fade_Time)
- {
- break;
- }
- yield return null;
- }
- yield return new WaitForSeconds(this.m_Next_Time);
- this.Set_Next_UI();
- yield break;
- yield break;
- }
- private const string m_TrophyGet_UI_Path = "Prefab/TrophyGet_UI";
- private const string m_Font_Path = "Font/Day_Display_UI_Font";
- private const string m_SE_Name = "SE015.ogg";
- private static GameObject m_Now_DisplayUI;
- private static List<string> m_Trophy_Text;
- [SerializeField]
- [Header("この文字数で改行")]
- private int m_Line_Count = 15;
- [SerializeField]
- private Color m_Text_Col = Color.white;
- [SerializeField]
- [Header("外枠色")]
- private Color m_Outline_Col = Color.black;
- [SerializeField]
- [Header("外枠透明度")]
- [Range(0f, 1f)]
- private float m_Outline_Alpha = 0.5f;
- [SerializeField]
- [Header("2D用")]
- [Header("文字サイズ")]
- private int m_2D_Text_Size = 25;
- [SerializeField]
- [Header("文字設置間隔(X:横、Y:縦)")]
- private Vector2 m_2D_Delta_Size = new Vector2(25f, 25f);
- [SerializeField]
- [Header("どの位置まで下げるか")]
- private float m_2D_Down_Length = 75f;
- [SerializeField]
- [Header("外枠サイズ")]
- private float m_2D_Outline_Size = 2f;
- [SerializeField]
- [Header("VR用")]
- [Header("前方距離")]
- private float m_Forward_Length = 1f;
- [SerializeField]
- [Header("横距離")]
- private float m_Width_Length = 0.75f;
- [SerializeField]
- [Header("下位置")]
- private float m_Down_Length = 0.35f;
- [SerializeField]
- [Header("文字設置間隔(X:横、Y:縦)")]
- private Vector2 m_Delta_Size = new Vector2(15f, 15f);
- [SerializeField]
- [Header("文字サイズ")]
- private int m_Text_Size = 15;
- [SerializeField]
- [Header("外枠サイズ")]
- private float m_Outline_Size = 1f;
- [SerializeField]
- [Header("アニメーション関連(全般)")]
- private float m_Wait_Time = 2f;
- [SerializeField]
- private float m_Fade_Time = 0.5f;
- [SerializeField]
- [Header("アニメーション関連(2D)")]
- private float m_Anime_Bace = 1f;
- [SerializeField]
- private float m_Anime_Lag = 0.1f;
- [SerializeField]
- [Header("アニメーション関連(VR)")]
- private float m_VR_AnimeTime = 7f;
- [SerializeField]
- [Header("連続して呼ばれた場合次のトロフィー用UIを出すまでの待機時間")]
- private float m_Next_Time = 0.5f;
- private string m_Use_String = string.Empty;
- private int m_All_LineCount;
- private Dictionary<Text, RectTransform> m_All_Text_Rect;
- private GameObject m_Text_Plate;
- }
|