using Cysharp.Threading.Tasks; using FairyGUI; using Sirenix.Utilities; using UnityEngine; namespace ET.Client { [Event(SceneType.Client)] public class AppStartInitFinish_CreateLoginUI : AEvent { protected override async ETTask Run(Scene scene, EventType.AppStartInitFinish args) { Log.Debug("to load login ui."); var ass = await YooAssetProxy.LoadAssetAsync("FGUI_Login_fui"); UIPackage.AddPackage(ass.GetAssetObject().bytes, "Login", LoadPackageInternalAsync); var view = UIPackage.CreateObject("Login", "Login").asCom; view.name = "Login"; GRoot.inst.AddChild(view); InitLogin(scene, view); var preView = GRoot.inst.GetChildAt(0); GRoot.inst.RemoveChild(preView, true); UIPackage.RemovePackage("CheckForResUpdate"); } /// /// 加载资源的异步委托 /// /// 注意,这个name是FGUI内部组装的纹理全名,例如FUILogin_atlas0 /// /// /// private static async void LoadPackageInternalAsync(string name, string extension, System.Type type, PackageItem item) { var tex = await YooAssetProxy.LoadAssetAsync($"FGUI_{name}"); item.owner.SetItemAsset(item, tex.GetAsset(), DestroyMethod.Unload); } private void InitLogin(Scene scene, GComponent view) { var account = view.GetChild("input_name"); var password = view.GetChild("input_password"); var btn = view.GetChild("Btn_Login"); btn.onClick.Add(async () => { var imgtips = view.GetChild("img_tips"); var tips = view.GetChild("txt_tips"); tips.visible = false; imgtips.visible = false; if (account.text.IsNullOrWhitespace() || password.text.IsNullOrWhitespace()) { tips.visible = true; tips.text = "用户名或密码为空"; return; } imgtips.visible = true; btn.enabled = false; var ret = await LoginHelper.Login(scene, account.text, password.text); if (ret != ErrorCode.ERR_Success) { imgtips.visible = false; tips.visible = true; btn.enabled = true; if (ret == ErrorCode.ERR_UserNameOrPasswordFormatError || ret == ErrorCode.ERR_UserNameOrPasswordError) { tips.text = "用户名或密码错误"; } else { tips.text = "连接服务器过程中出现了问题\n" + "如重试后还是不行,请与客服联系" + "\n[color=#FFCCCC][b]QQ: 400888666[/b][/color] 微信:[color=#FFCCCC][b]大老板[/color][/b]"; } } }); } } }