using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityGameFramework.Runtime; using GameFramework; using GameFramework.DataTable; using GameFramework.Sound; using GameFramework.Download; using GameFramework.FileSystem; using GameFramework.ObjectPool; using GameFramework.Resource; using System; using DG.Tweening; namespace MetaClient { public class UICustom : UGuiForm { // Start is called before the first frame update [Header("初始界面")] public GameObject toolView; [Header("基础按钮界面")] public GameObject baseView; [Header("保存按钮")] public GameObject saveBtn; [Header("捏脸界面")] public GameObject nieLianView; [Header("身体界面")] public GameObject bodyView; [Header("自定义")] public GameObject ziDingYiBtn; [Header("衣服界面")] public GameObject clothView; [Header("左边界面")] public GameObject leftView; [Header("右边界面")] public GameObject rightView; //[Header("点击后生成的按钮列表")] //public GameObject buttonList; [Header("白底背景")] public GameObject whitebg; [Header("按钮预制体")] public GameObject buttonItem; [Header("滑块")] public Scrollbar scrollbar; [Header("颜色选择界面")] public GameObject colorView; // [Header("顺序")] private EButtonShunXu eButtonShunXu = EButtonShunXu.None; [Header("颜色演示预制体")] public GameObject colItem; public float tween_leftMax = 0; public float tween_leftMin = -250; public float tween_rightMin = 0; public float tween_rightMax = 223; private float tween_saveBtnMax = 119; private float tween_saveBtnMin = -108; private float tweenTime = 0.5f; //private float tweenTime = 10; //private float tweenLeastTime = 0; public bool isTween = false; [Header("选择界面分支")] [SerializeField] private ECustomStyple eCustomStyple = ECustomStyple.None; [Header("历史记录用于回退")] [SerializeField] private List histroy; //用来判断是否是例如颜色框 调色板等额外的弹窗; private bool histroyextra; private int part = 0; //[Header("接受到的数据")] //[SerializeField] private IDataTable _bodydata; protected override void OnOpen(object userData) { base.OnOpen(userData); IDataTable _data = GameEntry.DataTable.GetDataTable(); _bodydata = GameEntry.DataTable.GetDataTable(); } protected override void OnClose(bool isShutdown, object userData) { base.OnClose(isShutdown, userData); } public void ClickBotton(ECustomStyple eCustomStyple,int id,bool ziDingYi) { if (isTween) { return; } isTween = true; leftView.transform.DOLocalMoveX(tween_leftMin, tweenTime).SetEase(Ease.InOutBack).OnComplete(()=> { //whitebg.SetActive(bg); ClickBtnFun(eCustomStyple,id,ziDingYi); leftView.transform.DOLocalMoveX(0, tweenTime).SetEase(Ease.InOutBack).OnComplete(() => { isTween = false; Debug.Log("222"); }); }); Debug.Log("333"); rightView.transform.DOLocalMoveX(tween_rightMax, tweenTime).SetEase(Ease.InOutBack).OnComplete(() => { rightView.transform.DOLocalMoveX(0, tweenTime).SetEase(Ease.InOutBack).OnComplete(() => { }); }); } public void TiaoSeViewOpenFun() { } public void TiaoSeBanOpenStyple(bool _bo) { rightView.SetActive(_bo); colorView.SetActive(!_bo); } //private void /// /// 设置是否已在缓动 /// public void SetTween(bool _bo) { isTween = _bo; } /// /// 获取是否缓动 /// public bool GetTween() { return isTween; } public void HistoryAdd(string _str) { histroy.Add(_str); } /// /// 滑块改变 /// public void ScrollValueChange() { //Debug.Log(scrollbar.value); GameEntry.Event.Fire(this, CustomRoleBodyEventArgs.Create(part, new Vector3(scrollbar.value, 0, 0))); } public void BackBtnFun() { if (histroyextra) { BackExtraFun(); histroyextra = false; return; } switch (this.histroy.Count) { case 0: Debug.Log("返回上一层"); break; case 1: Debug.Log("返回选择捏脸/身体/服装"); histroy.RemoveAt(histroy.Count - 1); Back_OneFun(); break; case 2: Debug.Log("进入选择界面"); histroy.RemoveAt(histroy.Count - 1); Back_TwoFun(true); break; default: Debug.Log("进入自定义或颜色"); // histroy.RemoveAt(histroy.Count - 1); Back_ThreeFun(); histroy.RemoveAt(histroy.Count - 1); break; } } void Back_OneFun() { ViewSetFalse(); toolView.SetActive(true); //toolView.SetActive(true); //bodyView.SetActive(false); //nieLianView.SetActive(false); //clothView.SetActive(false); } void BackExtraFun() { rightView.SetActive(true); scrollbar.gameObject.SetActive(false); } void ViewSetFalse() { toolView.SetActive(false); bodyView.SetActive(false); nieLianView.SetActive(false); clothView.SetActive(false); } void BackView_Extra(GameObject _obj,bool _bo) { ViewSetFalse(); _obj.SetActive(_bo); ViewSetChildTrue(_obj,_bo); } void ViewSetChildTrue(GameObject _obj,bool _bo) { _obj.transform.GetChild(0).gameObject.SetActive(_bo); _obj.transform.GetChild(0).gameObject.SetActive(_bo); _obj.transform.GetChild(2).gameObject.SetActive(!_bo); } void Back_TwoFun(bool _bo) { // int _choose = int.Parse(histroy[1]); // switch ((ECustomStyple)_choose) switch(eCustomStyple) { case ECustomStyple.Body: BackView_Extra(bodyView,_bo); break; case ECustomStyple.Cloth: BackView_Extra(clothView, _bo); break; case ECustomStyple.None: break; case ECustomStyple.NieLian: BackView_Extra(nieLianView, _bo); break; } //toolView.SetActive(true); //bodyView.SetActive(false); //nieLianView.SetActive(false); //clothView.SetActive(false); } void Back_ThreeFun() { string[] _strArrary = histroy[histroy.Count - 1].Split(','); if (_strArrary[0] == "Color") { colorView.SetActive(false); rightView.SetActive(true); } else if (_strArrary[0] == "ziDingyi") { int _chooseId = int.Parse(_strArrary[1]); ClickBtnFun(eCustomStyple, _chooseId, false); } else { Debug.Log("缺少当前情况需要添加>>>>"); } //toolView.SetActive(true); //bodyView.SetActive(false); //nieLianView.SetActive(false); //clothView.SetActive(false); } /// /// 修改滑块 /// public void SetValue(int _part,ECustomStyple eCustomStyple) { //scrollbar.value = _value; part = _part; scrollbar.value = CustomManager.Instance.GetBodyBoneValue(part); } /// /// 获得滑块值 /// public float GetValue() { return scrollbar.value; } /// /// 按钮点击事件 /// public void ClickBtnFun(ECustomStyple eCustomStyple,int id,bool zidingyi) { //if (isTween) //{ // return; //} whitebg.SetActive(true); scrollbar.gameObject.SetActive(false); this.eCustomStyple = eCustomStyple; //ECustomStyple _eCustomStyple = (ECustomStyple)int.Parse(_objects[0].ToString()); switch (eCustomStyple) { case ECustomStyple.None: break; case ECustomStyple.NieLian: GameObject _nieLianList = nieLianView.transform.GetChild(0).gameObject; _nieLianList.SetActive(false); GameObject _nieLianXX = nieLianView.transform.GetChild(2).gameObject; _nieLianXX.SetActive(true); //if (!zidingyi) //{ // ZiDingYiNeiLian(eCustomStyple, id, _nieLianXX.transform.GetChild(0).gameObject); // return; //} CreateNieLianImg(id, zidingyi); break; case ECustomStyple.Body: GameObject _bodyList = bodyView.transform.GetChild(0).gameObject; _bodyList.SetActive(false); GameObject _bodyListXX =bodyView.transform.GetChild(2).gameObject; _bodyListXX.SetActive(true); //if (!zidingyi) //{ // ZiDingYiBody(eCustomStyple, id, _bodyListXX.transform.GetChild(0).gameObject); // return; //} CreateBodyImg(id, zidingyi); break; case ECustomStyple.Cloth: GameObject _clothList = clothView.transform.GetChild(0).gameObject; _clothList.SetActive(false); GameObject _clothListXX = clothView.transform.GetChild(2).gameObject; _clothListXX.SetActive(true); //if (!zidingyi) //{ // ZiDingYiCloth(eCustomStyple, id, _clothListXX.transform.GetChild(0).gameObject); // return; //} CreateClothImg(id, zidingyi); break; } } //public Action ActionFun() { // return null; //} private void RemoveAllChildren(GameObject parent) { Transform transform; for (int i = 0; i < parent.transform.childCount; i++) { transform = parent.transform.GetChild(i); GameObject.Destroy(transform.gameObject); } } //public void ZiDingYiNeiLian(ECustomStyple eCustomStyple, int id,GameObject _objPar) { // RemoveAllChildren(bodyView.transform.GetChild(2).GetChild(0).gameObject); // GameObject _obj = GameObject.Instantiate(ziDingYiBtn); // _obj.transform.SetParent(_objPar.transform); // UICustomBtn _uICustomBtn = _obj.GetComponent(); // _uICustomBtn.id = id; // _uICustomBtn.eCustomStyple = eCustomStyple; // _obj.SetActive(true); //} //public void ZiDingYiBody(ECustomStyple eCustomStyple, int id, GameObject _objPar) //{ // RemoveAllChildren(bodyView.transform.GetChild(2).GetChild(0).gameObject); // GameObject _obj = GameObject.Instantiate(ziDingYiBtn); // _obj.transform.SetParent(_objPar.transform); // UICustomBtn _uICustomBtn = _obj.GetComponent(); // _uICustomBtn.id = id; // _uICustomBtn.eCustomStyple = eCustomStyple; // _obj.SetActive(true); //} //public void ZiDingYiCloth(ECustomStyple eCustomStyple, int id, GameObject _objPar) //{ // RemoveAllChildren(bodyView.transform.GetChild(2).GetChild(0).gameObject); // GameObject _obj = GameObject.Instantiate(ziDingYiBtn); // _obj.transform.SetParent(_objPar.transform); // UICustomBtn _uICustomBtn = _obj.GetComponent(); // _uICustomBtn.id = id; // _uICustomBtn.eCustomStyple = eCustomStyple; // _obj.SetActive(true); //} public void CreateNieLianImg(int parentid, bool ziDingYi) { GameObject _objPar = bodyView.transform.GetChild(2).GetChild(0).gameObject; RemoveAllChildren(_objPar); //等有捏脸表时改为捏脸 IDataTable _data = GameEntry.DataTable.GetDataTable(); _bodydata = GameEntry.DataTable.GetDataTable(); int cengji = ziDingYi ?1:0; if (!ziDingYi) { CreateZDYFun(parentid, _objPar); //GameObject _obj = GameObject.Instantiate(ziDingYiBtn); //_obj.transform.SetParent(_objPar.transform); //UICustomBtn _uICustomBtn = _obj.GetComponent(); //ChangeUICustom(_uICustomBtn, parentid, eCustomStyple); //_uICustomBtn.id =parentid; //_uICustomBtn.eCustomStyple = eCustomStyple; //_obj.SetActive(true); } DRCustomBody[] dRCustomBodies = _bodydata.GetAllDataRows(); for (int i = 0; i < dRCustomBodies.Length; i++) { Debug.Log(dRCustomBodies[i].Id); if (dRCustomBodies[i].ParentStyple == parentid&&dRCustomBodies[i].Cengji==cengji) { CreateButtonFun(dRCustomBodies[i].Icon, dRCustomBodies[i].Part, dRCustomBodies[i].Name, _objPar, dRCustomBodies[i].Id, dRCustomBodies[i].ButtonStyple, ECustomStyple.Body); } } ChangeListBotton(_objPar); } public void CreateClothImg(int parentid,bool ziDingYi) { GameObject _objPar = bodyView.transform.GetChild(2).GetChild(0).gameObject; RemoveAllChildren(_objPar); //等有服装时改为服装 IDataTable _data = GameEntry.DataTable.GetDataTable(); _bodydata = GameEntry.DataTable.GetDataTable(); int cengji = ziDingYi ?1:0; if (!ziDingYi) { CreateZDYFun(parentid, _objPar); //GameObject _obj = GameObject.Instantiate(ziDingYiBtn); //_obj.transform.SetParent(_objPar.transform); //UICustomBtn _uICustomBtn = _obj.GetComponent(); //ChangeUICustom(_uICustomBtn, parentid, eCustomStyple); //_uICustomBtn.id = parentid; //_uICustomBtn.eCustomStyple = eCustomStyple; //_obj.SetActive(true); } DRCustomBody[] dRCustomBodies = _bodydata.GetAllDataRows(); for (int i = 0; i < dRCustomBodies.Length; i++) { Debug.Log(dRCustomBodies[i].Id); if (dRCustomBodies[i].ParentStyple == parentid && dRCustomBodies[i].Cengji == cengji) { CreateButtonFun(dRCustomBodies[i].Icon, dRCustomBodies[i].Part, dRCustomBodies[i].Name, _objPar, dRCustomBodies[i].Id, dRCustomBodies[i].ButtonStyple, ECustomStyple.Body); } } ChangeListBotton(_objPar); } private void CreateZDYFun(int parentid,GameObject _objPar) { GameObject _obj = GameObject.Instantiate(ziDingYiBtn); _obj.transform.SetParent(_objPar.transform); UICustomBtn _uICustomBtn = _obj.GetComponent(); ChangeUICustom(_uICustomBtn, parentid, eCustomStyple); } public void ChangeUICustom(UICustomBtn uICustomBtn,int id, ECustomStyple eCustomStyple) { uICustomBtn.id = id; uICustomBtn.eCustomStyple = eCustomStyple; uICustomBtn.gameObject.SetActive(true); } public void CreateBodyImg(int parentid,bool ziDingYi) { GameObject _objPar = bodyView.transform.GetChild(2).GetChild(0).gameObject; RemoveAllChildren(_objPar); IDataTable _data = GameEntry.DataTable.GetDataTable(); _bodydata = GameEntry.DataTable.GetDataTable(); int cengji = ziDingYi ?1:0; if (!ziDingYi) { CreateZDYFun(parentid, _objPar); //GameObject _obj = GameObject.Instantiate(ziDingYiBtn); //_obj.transform.SetParent(_objPar.transform); //UICustomBtn _uICustomBtn = _obj.GetComponent(); //ChangeUICustom(_uICustomBtn, parentid, eCustomStyple); //_uICustomBtn.id = parentid; //_uICustomBtn.eCustomStyple = eCustomStyple; //_obj.SetActive(true); } DRCustomBody[] dRCustomBodies = _bodydata.GetAllDataRows(); for (int i = 0; i < dRCustomBodies.Length; i++) { Debug.Log(dRCustomBodies[i].Id); if (dRCustomBodies[i].ParentStyple == parentid && dRCustomBodies[i].Cengji == cengji) { CreateButtonFun(dRCustomBodies[i].Icon, dRCustomBodies[i].Part, dRCustomBodies[i].Name, _objPar, dRCustomBodies[i].Id, dRCustomBodies[i].ButtonStyple, ECustomStyple.Body); } } ChangeListBotton(_objPar); } /// /// 改变列表长短 /// public void ChangeListBotton(GameObject _obj) { //Debug.Log("改变列表"+ _obj.transform.childCount+""); float _x = _obj.GetComponent().offsetMin.x; int _childNum = _obj.transform.childCount; float _y = _childNum > 7 ? -240 * (_childNum - 7) : 0; _obj.GetComponent().offsetMax = new Vector2(_x, 0); _obj.GetComponent().offsetMin = new Vector2(_x, _y); } //private IEnumerator Tween(Action _action) { // for (int i = 0; i < 100; i++) // { // float _value = i / 100; // float _right=Mathf.Lerp(tween_rightMax, tween_rightMin, _value); // float _left= Mathf.Lerp(tween_leftMix, tween_rightMax, _value); // clothView.GetComponent().SetPositionX(_right); // toolView.GetComponent().SetPositionX(_right); // bodyView.GetComponent().SetPositionX(_right); // nieLianView.GetComponent().SetPositionX(_right); // baseView.GetComponent().SetPositionX(_left); // } // yield return null; //} protected override void OnUpdate(float elapseSeconds, float realElapseSeconds) { base.OnUpdate(elapseSeconds, realElapseSeconds); } //private void CreateNieLianFun(object[] _objects) { // ENieLianStyple _eNieLianStyple = (ENieLianStyple)int.Parse(_objects[1].ToString()); // switch (_eNieLianStyple) // { // case ENieLianStyple.faxing: // break; // case ENieLianStyple.lianxing: // break; // case ENieLianStyple.yankuang: // break; // case ENieLianStyple.tongkong: // break; // case ENieLianStyple.meimao: // break; // case ENieLianStyple.bizi: // break; // case ENieLianStyple.erduo: // break; // case ENieLianStyple.zuiba: // break; // case ENieLianStyple.fuse: // break; // } // //switch() //} private void CreateButtonFun(string path,int _part,string _name, GameObject _parent,int _id,int buttonstyple,ECustomStyple eCustomStyple) { //Debug.Log(path); // Debug.Log(_parent); path = "CustomRole/" + path; GameEntry.Resource.LoadAsset(AssetUtility.GetUISpriteAsset(path), new LoadAssetCallbacks( (assetName, asset, duration, userData) => { // Debug.Log(path); // Debug.Log(_parent); Texture2D tex = (Texture2D)asset; var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero); GameObject _obj = GameObject.Instantiate(buttonItem); Image _objImg = _obj.transform.GetComponent(); _obj.SetActive(true); _objImg.sprite = sprite; _obj.name = part+""; _obj.transform.SetParent(_parent.transform); UICustomBtn uICustomBtn = _obj.GetComponent(); uICustomBtn.id = _id; uICustomBtn.eButtonStyple = (EButtonStyple)buttonstyple; uICustomBtn.eCustomStyple = eCustomStyple; uICustomBtn.isCreate = false; uICustomBtn.part = _part; //GameObject //img.sprite = sprite; //if (nativeSize) //{ // img.SetNativeSize(); //} ChangeListBotton(_parent); })); } //public void NieLian() { //} public void ClickFaceChangeBtn() { GameEntry.Event.Fire(this, CustomRoleFaceEventArgs.Create(EditableFacePart.eye, new Vector3(1, 0, 0))); } } public enum ECustomStyple { None, NieLian, Body, Cloth } public enum EButtonStyple { Button, Scroll, TiaoSe, NorButton, Back } public enum ENieLianStyple { None, faxing, lianxing, yankuang, tongkong, meimao, bizi, erduo, zuiba, fuse } public enum EButtonShunXu { None, First, Second, Third } public enum ETSStyple { None, ViewOpen, Close, Sure, Open } }