Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

90 Zeilen
2.3 KiB

  1. using System;
  2. using Cysharp.Threading.Tasks;
  3. using TMPro;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. public class LoginView : MonoBehaviour
  7. {
  8. public TMP_InputField PhoneNumberInputField;
  9. public TMP_InputField VerifyCodeInputField;
  10. public TMP_Text ErrorText;
  11. public Button SendCodeButton;
  12. public TMP_Text SendCodeButtonText;
  13. public Button LoginButton;
  14. public HomeView homeView;
  15. // Start is called before the first frame update
  16. void Start()
  17. {
  18. SendCodeButton.onClick.AddListener(SendVerifyCode);
  19. LoginButton.onClick.AddListener(Login);
  20. }
  21. private void SendVerifyCode()
  22. {
  23. SendVerifyCodeTask().Forget();
  24. }
  25. async UniTask SendVerifyCodeTask()
  26. {
  27. CodeResponse codeResponse = await HttpManager.Instance.RequestPost<CodeRequest, CodeResponse>("request-code", new CodeRequest(){phone = PhoneNumberInputField.text});
  28. if (codeResponse.message == "验证码已发送")
  29. {
  30. SendCodeButton.interactable = false;
  31. Countdown(30).Forget();
  32. }
  33. ErrorText.text = codeResponse.message;
  34. }
  35. private async UniTaskVoid Countdown(int duration)
  36. {
  37. SendCodeButtonText.color = Color.gray;
  38. while (duration > 0)
  39. {
  40. SendCodeButtonText.text = $"发送验证码({duration})";
  41. await UniTask.Delay(TimeSpan.FromSeconds(1), ignoreTimeScale: false);
  42. duration--;
  43. }
  44. SendCodeButtonText.text = "发送验证码";
  45. SendCodeButton.interactable = true;
  46. SendCodeButtonText.color = Color.black;
  47. }
  48. void Login()
  49. {
  50. LoginTask().Forget();
  51. }
  52. async UniTask LoginTask()
  53. {
  54. LoginResponse loginResponse = await HttpManager.Instance.RequestPost<LoginRequest, LoginResponse>("verify-code", new LoginRequest(){phone = PhoneNumberInputField.text, code = VerifyCodeInputField.text});
  55. if (loginResponse.message == "验证成功")
  56. {
  57. ShowHomeView();
  58. }
  59. else
  60. {
  61. ErrorText.text = loginResponse.message;
  62. }
  63. }
  64. private void ShowHomeView()
  65. {
  66. gameObject.SetActive(false);
  67. homeView.Show();
  68. }
  69. // Update is called once per frame
  70. void Update()
  71. {
  72. }
  73. }