using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using JCUnityLib; using UnityEngine.EventSystems; using UnityEngine.Events; public class BoxUserSettings : MonoBehaviour { [SerializeField] GameObject inputs; [SerializeField] Sprite bgOn; [SerializeField] Sprite bgOff; [SerializeField] Image[] bgArray; InputField inputFieldNickname;//输入框组件 bool isFocused = false; void OnEnable() { RenderInfo(); RenderAvatar(); } void Start() { inputFieldNickname = inputs.transform.Find("Nickname").GetComponentInChildren(); inputFieldNickname.onEndEdit.AddListener(s => { LoginMgr.myUserInfo.nickname = s; RenderInfo(); LoginMgr.myUserInfo.Save(); }); //var eventTrigger = inputFieldNickname.gameObject.AddComponent(); //UnityAction selectEvent = OnInputFieldClicked; //EventTrigger.Entry onClick = new EventTrigger.Entry() //{ // eventID = EventTriggerType.PointerClick //}; //onClick.callback.AddListener(selectEvent); //eventTrigger.triggers.Add(onClick); } private void Update() { if (isFocused != inputFieldNickname.isFocused) { isFocused = inputFieldNickname.isFocused; if (isFocused) setStateBg(1); //else bgArray[1].sprite = bgOff; } } private void OnInputFieldClicked(BaseEventData data) { //TODO: 点击事件 setStateBg(1); } void RenderInfo() { inputs.transform.Find("Nickname").GetComponentInChildren().text = LoginMgr.myUserInfo.nickname; inputs.transform.Find("Mobile").GetComponentInChildren().text = LoginMgr.myUserInfo.phone; inputs.transform.Find("Email").GetComponentInChildren().text = LoginMgr.myUserInfo.email; inputs.transform.Find("Birthday").GetComponentInChildren().text = LoginMgr.myUserInfo.birthday; //如果是中国,直接翻译中国两个字 //inputs.transform.Find("ItemBox/Region").GetComponentInChildren().text // = TextAutoLanguage2.GetLanguage() == LanguageEnum.English && LoginMgr.myUserInfo.country == "中国" ? "China" : LoginMgr.myUserInfo.country; inputs.transform.Find("ItemBox/Region").GetComponentInChildren().text = LoginMgr.myUserInfo.country; inputs.transform.Find("ItemBox/Gender/Text0").gameObject.SetActive(LoginMgr.myUserInfo.gender != 2); inputs.transform.Find("ItemBox/Gender/Text1").gameObject.SetActive(LoginMgr.myUserInfo.gender == 2); inputs.transform.Find("FixBox/Nickname").GetComponent().text = LoginMgr.myUserInfo.nickname; inputs.transform.Find("FixBox/ID").GetComponent().text = "ID: " + LoginMgr.myUserInfo.id; GetComponentInParent().NotifyUserInfoRefresh(); } void RenderAvatar() { Image avatarImage = inputs.transform.Find("FixBox/Avatar/Mask/Sprite").GetComponent(); RoleMgr.SetAvatarToImage(avatarImage, LoginMgr.myUserInfo.avatarID, LoginMgr.myUserInfo.avatarUrl); GetComponentInParent().NotifyUserInfoRefresh(); } public void setStateBg(int index) { for (int i = 0; i < bgArray.Length; i++) { if (i == index) { bgArray[i].sprite = bgOn; } else { bgArray[i].sprite = bgOff; } } } public void OnClick_BindPhone() { setStateBg(0); AudioMgr.ins.PlayBtn(); RelateValidateView relateValidateView = Instantiate(SceneResourceManager.Instance.GetPrefab("RelateValidateView")) .GetComponent(); CanvasUtils.PlusSortOrder(gameObject.GetComponentInParent().gameObject, relateValidateView.gameObject, 1); relateValidateView.InitForPhone2(); relateValidateView.onValidateSuccess = (a, b, c) => { relateValidateView?.BanButtons(); StartCoroutine(UserController.Instance.SavePhone(a, b, c, (res) => { if (res.code == 0) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByKey("RelateValidateView-pass1")); LoginMgr.myUserInfo.phone = a; RenderInfo(); relateValidateView?.CloseView(); } })); }; } public void OnClick_BindEmail() { setStateBg(2); AudioMgr.ins.PlayBtn(); RelateValidateView relateValidateView = Instantiate(SceneResourceManager.Instance.GetPrefab("RelateValidateView")) .GetComponent(); CanvasUtils.PlusSortOrder(gameObject.GetComponentInParent().gameObject, relateValidateView.gameObject, 1); relateValidateView.InitForEmail2(); relateValidateView.onValidateSuccess = (a, b, c) => { relateValidateView?.BanButtons(); StartCoroutine(UserController.Instance.SaveEmail(a, b, c, (res) => { if (res.code == 0) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByKey("RelateValidateView-pass1")); LoginMgr.myUserInfo.email = a; RenderInfo(); relateValidateView?.CloseView(); } })); }; } #region 性别选择 public void OnClick_ChangeGender() { setStateBg(4); AudioMgr.ins.PlayBtn(); if (LoginMgr.myUserInfo.gender == 2) LoginMgr.myUserInfo.gender = 1; else LoginMgr.myUserInfo.gender = 2; RenderInfo(); LoginMgr.myUserInfo.Save(); } #endregion #region 地区选择 private string countryCode = "", stateCode = "", cityCode = ""; public void OpenLocationPicker() { setStateBg(3); AudioMgr.ins.PlayBtn(); System.Action eOnAgree = () => { GPSTool.GetAddress((address) => { if (address != null) { countryCode = address[0]; stateCode = address[1]; cityCode = address[2]; LoginMgr.myUserInfo.country = countryCode; LoginMgr.myUserInfo.state = stateCode; LoginMgr.myUserInfo.city = cityCode; RenderInfo(); LoginMgr.myUserInfo.Save(); } }); }; if (!HomeView.ShowProminentBeforeConnectBLE(eOnAgree)) eOnAgree.Invoke(); } #endregion #region 日期选择 [SerializeField] GameObject datePickerPrefab; public void OpenDatePicker() { setStateBg(5); AudioMgr.ins.PlayBtn(); GameObject o = Instantiate(datePickerPrefab); //o.GetComponentInChildren().onEnter += (JC.Unity.Picker.DatePickerGroup picker) => //{ // LoginMgr.myUserInfo.birthday = picker.GetSelectDateStr(); // RenderInfo(); // LoginMgr.myUserInfo.Save(); //}; o.GetComponentInChildren().onEnter += (DatePickerGroupNew picker) => { LoginMgr.myUserInfo.birthday = picker.GetSelectDateStr(); RenderInfo(); LoginMgr.myUserInfo.Save(); }; } #endregion #region 头像选择 [SerializeField] Transform avatarSelectView; bool avatarSelectViewInited = false; int curAvatarSelectID = 0; public void ShowAvatarSelectView() { AudioMgr.ins.PlayBtn(); avatarSelectView.gameObject.SetActive(true); if (avatarSelectViewInited) { } else { avatarSelectViewInited = true; curAvatarSelectID = LoginMgr.myUserInfo.avatarID; avatarSelectView.Find("FrameBox/BtnClose").GetComponent