AutoResetView.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. using UnityEngine.SceneManagement;
  7. /*
  8. 按下自动校准键出现倒计时3秒,同时伴有文字提示用户“三秒后即将开始校准,
  9. 请扶稳弓箭。”倒计时3秒后出现一个进度条也是三秒,用户在3秒内自己尽量扶稳弓即可,
  10. 进度条完成后,取一个平均值作为校准值。
  11. */
  12. public class AutoResetView : MonoBehaviour
  13. {
  14. public static AutoResetView ins;
  15. public static Action onInstantiate;
  16. public static void DoIdentity() {
  17. if (SceneManager.GetActiveScene().name.StartsWith("GameDouble"))
  18. {
  19. if (GameObject.Find("AutoResetViewNewLeft")) return;
  20. GameObject resetView = Instantiate(Resources.Load<GameObject>("AutoResetViewNew"));
  21. resetView.name = "AutoResetViewNewLeft";
  22. AutoResetViewNew autoResetViewNewScript = resetView.GetComponent<AutoResetViewNew>();
  23. autoResetViewNewScript.setPosLeft();
  24. autoResetViewNewScript.action_OnDestroy += () =>
  25. {
  26. //使用旧模式重置1p
  27. AimHandler.ins?.DoIdentity();
  28. };
  29. }else if (SceneManager.GetActiveScene().name.StartsWith("Game")) {
  30. Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
  31. }
  32. else if (SceneManager.GetActiveScene().name.StartsWith("DuckHunter")) {
  33. Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
  34. }
  35. else if (SceneManager.GetActiveScene().name.StartsWith("WildAttack"))
  36. {
  37. Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
  38. }
  39. else if (SceneManager.GetActiveScene().name.StartsWith("FruitMaster"))
  40. {
  41. Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
  42. }
  43. else {
  44. AimHandler.ins.DoIdentity();
  45. }
  46. }
  47. void Awake() {
  48. if (ins) {
  49. Destroy(gameObject);
  50. return;
  51. }
  52. ins = this;
  53. }
  54. void Start() {
  55. prepareTime = UserSettings.ins.calibrationTime;
  56. Debug.Log("弓箭重置时间:" + prepareTime);
  57. if (SceneManager.GetActiveScene().name == "Game") {
  58. (transform.Find("IconHumanShoot") as RectTransform).anchoredPosition = new Vector2(-193, -85);
  59. }
  60. GetGuideTip().textFormatArgs = new object[]{showedPrepareTime = Mathf.CeilToInt(prepareTime)};
  61. GetGuideTip().ApplyToText();
  62. ChallengeTargetForResetView.Show();
  63. onInstantiate?.Invoke();
  64. }
  65. public Action action_OnDestroy;
  66. void OnDestroy() {
  67. if (ins == this) ins = null;
  68. action_OnDestroy?.Invoke();
  69. }
  70. float prepareTime = 3;
  71. int showedPrepareTime;
  72. void Update() {
  73. prepareTime -= Time.deltaTime;
  74. if (prepareTime <= 0) {
  75. try {
  76. if (SceneManager.GetActiveScene().name.StartsWith("WildAttack")){
  77. WildAttack.GameMananger.GetInstance().ResetAim();
  78. }
  79. else
  80. {
  81. AimHandler.ins.DoIdentity();
  82. }
  83. }
  84. catch (Exception) {}
  85. Destroy(gameObject);
  86. } else {
  87. int curTime = Mathf.CeilToInt(prepareTime);
  88. if (showedPrepareTime != curTime) {
  89. showedPrepareTime = curTime;
  90. TextAutoLanguage2 gt = GetGuideTip();
  91. gt.textFormatArgs[0] = Mathf.CeilToInt(prepareTime);
  92. gt.ApplyToText();
  93. }
  94. }
  95. }
  96. TextAutoLanguage2 _guideTip;
  97. TextAutoLanguage2 GetGuideTip() {
  98. if (_guideTip == null) _guideTip = transform.Find("FrameTip").GetComponentInChildren<TextAutoLanguage2>();
  99. return _guideTip;
  100. }
  101. }