AppStartInitFinish_CreateLoginUI.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using UnityEngine;
  2. using FairyGUI;
  3. using Cysharp.Threading.Tasks;
  4. using System.ComponentModel;
  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(()=>
  42. {
  43. view.GetChild("img_tips").visible = false;
  44. view.GetChild("txt_tips").visible = false;
  45. btn.enabled = false;
  46. LoginHelper.Login(scene, account.text, password.text).Coroutine();
  47. });
  48. }
  49. }
  50. }