AppStartInitFinish_CreateLoginUI.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using Cysharp.Threading.Tasks;
  2. using FairyGUI;
  3. using Sirenix.Utilities;
  4. using UnityEngine;
  5. namespace ET.Client
  6. {
  7. [Event(SceneType.Client)]
  8. public class AppStartInitFinish_CreateLoginUI : AEvent<EventType.AppStartInitFinish>
  9. {
  10. protected override async ETTask Run(Scene scene, EventType.AppStartInitFinish args)
  11. {
  12. Log.Debug("to load login ui.");
  13. var ass = await YooAssetProxy.LoadAssetAsync<TextAsset>("FGUI_Login_fui");
  14. UIPackage.AddPackage(ass.GetAssetObject<TextAsset>().bytes, "Login", LoadPackageInternalAsync);
  15. var view = UIPackage.CreateObject("Login", "Login").asCom;
  16. view.name = "Login";
  17. GRoot.inst.AddChild(view);
  18. InitLogin(scene, view);
  19. var preView = GRoot.inst.GetChildAt(0);
  20. GRoot.inst.RemoveChild(preView, true);
  21. UIPackage.RemovePackage("CheckForResUpdate");
  22. }
  23. /// <summary>
  24. /// 加载资源的异步委托
  25. /// </summary>
  26. /// <param name="name">注意,这个name是FGUI内部组装的纹理全名,例如FUILogin_atlas0</param>
  27. /// <param name="extension"></param>
  28. /// <param name="type"></param>
  29. /// <param name="item"></param>
  30. private static async void LoadPackageInternalAsync(string name,
  31. string extension, System.Type type, PackageItem item)
  32. {
  33. var tex = await YooAssetProxy.LoadAssetAsync<Texture>($"FGUI_{name}");
  34. item.owner.SetItemAsset(item, tex.GetAsset<Texture>(), DestroyMethod.Unload);
  35. }
  36. private void InitLogin(Scene scene, GComponent view)
  37. {
  38. var account = view.GetChild("input_name");
  39. var password = view.GetChild("input_password");
  40. var btn = view.GetChild("Btn_Login");
  41. btn.onClick.Add(async () =>
  42. {
  43. var imgtips = view.GetChild("img_tips");
  44. var tips = view.GetChild("txt_tips");
  45. tips.visible = false;
  46. imgtips.visible = false;
  47. if (account.text.IsNullOrWhitespace() || password.text.IsNullOrWhitespace())
  48. {
  49. tips.visible = true;
  50. tips.text = "用户名或密码为空";
  51. return;
  52. }
  53. imgtips.visible = true;
  54. btn.enabled = false;
  55. var ret = await LoginHelper.Login(scene, account.text, password.text);
  56. if (ret != ErrorCode.ERR_Success)
  57. {
  58. imgtips.visible = false;
  59. tips.visible = true;
  60. btn.enabled = true;
  61. if (ret == ErrorCode.ERR_UserNameOrPasswordFormatError ||
  62. ret == ErrorCode.ERR_UserNameOrPasswordError)
  63. {
  64. tips.text = "用户名或密码错误";
  65. }
  66. else
  67. {
  68. tips.text = "连接服务器过程中出现了问题\n" +
  69. "如重试后还是不行,请与客服联系" +
  70. "\n[color=#FFCCCC][b]QQ: 400888666[/b][/color] 微信:[color=#FFCCCC][b]大老板[/color][/b]";
  71. }
  72. }
  73. });
  74. }
  75. }
  76. }