public override async void Init() { var ExtensionManager = new ExtensionManager(); var GMToolsManager = new GMToolsManager(); //JEvent.ShowLog = true;//是否显示一些log JEvent.defaultEvent.Register(UIManager); JEvent.defaultEvent.Register(ExtensionManager); JEvent.defaultEvent.Register(GMToolsManager); //先搞一个登录失败数据 LoginErrorData d = new LoginErrorData { username = "******", errorMsg = "故意让它错误的", }; //广播错误数据 JEvent.defaultEvent.Post(d); //取消注册ExtensionManager,这样下次不会post到这个实例内的方法 JEvent.defaultEvent.Unregister(ExtensionManager); await Task.Delay(3000); //创建独立的JEvent JEvent e = new JEvent(); //登录成功数据 LoginSuccessData dt = new LoginSuccessData { username = "******", money = 10000 }; //给独立的JEvent注册方法 e.Register(UIManager); e.Register(GMToolsManager); //广播 e.Post(dt); }
/// <summary> /// 登录成功的时候的UI界面更新 /// </summary> /// <param name="data"></param> public void OnSuccess(LoginSuccessData data) { SuccessPanel.SetActive(true); new JAction().Delay(3).Do(() => { SuccessPanel.SetActive(false); UsernameText.text = data.username; //因为在GMTools那边更新了money数据,所以用那边的静态实例数据 //自己写的时候也要注意,每个方法的data参数哪怕进行了更改也不会影响其他方法内的data //必须自己把它单独保存到一个其他方法也能读到的地方,才能在其他方法里同步对数据的修改 //同时多线程处理数据请自行考虑线程安全,脏数据就得自己处理了 MoneyText.text = $"¥{GMToolsManager.successData.money}"; GamePanel.SetActive(true); }) .Delay(3) .Do(() => { GamePanel.transform.parent.gameObject.SetActive(false); }).Execute(true); }
[Subscriber(ThreadMode.Main)]//跑主线程 public void GetMoreMoney(LoginSuccessData data) { successData = data; successData.money *= 100; }
/// <summary> /// logcat测试的时候log一下登录成功的账号 /// </summary> /// <param name="data"></param> public void LogcatSuccessData(LoginSuccessData data) { Log.Print($"{data.username}登录成功"); }