public bool RemoveAtlas(UIAtlasType t) { int aid = (int)t; if (mGlobalAtlasTexName.Contains(aid)) { return(false); } if (!mAtlasRefCounts.ContainsKey(aid)) { Debug.LogError("尝试检索不存在的图包[" + t.ToString() + "]的引用计数"); return(false); } if (--mAtlasRefCounts[aid] <= 0) { if (!mAtlasList.ContainsKey(aid)) { Debug.LogError("尝试移除不存在的图包:" + t.ToString()); return(false); } UIAtlas atlas = mAtlasList[aid].Bgein; DestroyImmediate(atlas.texture, true); Resources.UnloadAsset(atlas.texture); atlas.spriteMaterial.mainTexture = null; mAtlasRefCounts.Remove(aid); //LogSys.Debug("成功移除UI图包:" + atlasList[i]); } return(true); }
// public static bool LoadAtlas(UIAtlasType t, UISpriteEx spEx) // { // if (!FindManager()) // return false; // if (null != spEx) // { //if (spEx.type == UISprite.Type.Simple) // { // if (Inst.mAtlasList.ContainsKey((int)t)) // { // UIAtlas atlas = Inst.mAtlasList[(int)t].Bgein; // UISpriteData spData = null; // if (spEx.SpriteIndex != -1) // spData = atlas.FindSpriteData(spEx.SpriteIndex); // if (null == spData) // spData = atlas.GetSprite(spEx.spriteName); // if (null != spData) // { // spEx.width = spData.width; // spEx.height = spData.height; // } // } // } // } // Inst.StartCoroutine(Inst.DoLoadAtlas(t, spEx)); // return true; // } public static bool LoadAtlas(UIAtlasType t, AtlasEventHandler callback) { if (!FindManager()) { return(false); } Inst.StartCoroutine(Inst.DoLoadAtlas((int)t, callback)); return(true); }
public void OnAtlasLoaded(UIAtlasType t) { if (mWaitAtlasList.Contains(t)) { mWaitAtlasList.Remove(t); } if (mWaitAtlasList.Count <= 0) { mReadyShowing = true; DoReadyShowing(); } }
public ThreeData <UIAtlas, string, Vector2> this[UIAtlasType t] { get { if (!mAtlasList.ContainsKey((int)t)) { return(null); } //if (!mGlobalAtlasTexName.Contains(n)) // return null; return(mAtlasList[(int)t]); } }
T OnLoadDialog <T>(UIViewType ui, string uiName, string atlasList, PopupDialogType t, Transform parent, string richPath, object[] richPs, PopupDialogView.ButtonEventHandler btnEvent, object[] ps, PopupDialogView.DialogEventHandleer callback) where T : PopupDialogView { float sTime = Time.realtimeSinceStartup; GameObject uiObj = Instantiate(mUIList[uiName]) as GameObject; uiObj.name = uiName; uiObj.SetActive(true); T ret = uiObj.GetComponent <T>(); if (null != ret) { ret.UI类型 = ui; ret.SetWhiteBlockTex(WhiteBlockTex); if (null != callback) { callback(t, ret, parent, richPath, richPs, btnEvent, ps); } bool noNeedAtlas = true; string[] list = atlasList.Split("#".ToCharArray()); List <int> aidList = new List <int>(); for (int i = 0; i < list.Length; ++i) { if (string.IsNullOrEmpty(list[i])) { continue; } if (System.Enum.IsDefined(typeof(UIAtlasType), list[i])) { UIAtlasType at = (UIAtlasType)System.Enum.Parse(typeof(UIAtlasType), list[i]); noNeedAtlas = false; ret.AddRefAtlas(at); aidList.Add((int)at); } } if (noNeedAtlas) { ret.DoReadyShowing(); } else { for (int i = 0; i < aidList.Count; ++i) { StartCoroutine(DoLoadAtlas(aidList[i], ret)); } } } LogSys.Debug("~~~inst ui[" + uiName + "]used:" + (Time.realtimeSinceStartup - sTime).ToString()); return(ret); }
T OnLoadUI <T>(UIViewType ui, string uiName, string atlasList) where T : UIBaseView { float sTime = Time.realtimeSinceStartup; GameObject uiObj = Instantiate(mUIList[uiName]) as GameObject; uiObj.name = uiName; uiObj.SetActive(true); T ret = uiObj.GetComponent <T>(); if (null != ret) { ret.UI类型 = ui; ret.SetWhiteBlockTex(WhiteBlockTex); bool noNeedAtlas = true; string[] list = atlasList.Split("#".ToCharArray()); List <int> aidList = new List <int>(); for (int i = 0; i < list.Length; ++i) { if (string.IsNullOrEmpty(list[i])) { continue; } if (System.Enum.IsDefined(typeof(UIAtlasType), list[i])) { UIAtlasType at = (UIAtlasType)System.Enum.Parse(typeof(UIAtlasType), list[i]); noNeedAtlas = false; ret.AddRefAtlas(at); aidList.Add((int)at); } } if (noNeedAtlas) { ret.DoReadyShowing(); } else { for (int i = 0; i < aidList.Count; ++i) { StartCoroutine(DoLoadAtlas(aidList[i], ret)); } } } LogSys.Debug("~~~inst ui[" + uiName + "]used:" + (Time.realtimeSinceStartup - sTime).ToString()); return(ret); }
bool DoAddImageAnim(string p, string n, string m, int fps) { if (NextTextIsNotShow) { return(true); } if (行数限制 > 0 && mNowLineCount >= 行数限制) { return(true); } UIAtlasType at = UIAtlasType.max; for (UIAtlasType i = UIAtlasType.公用数字图包1; i < UIAtlasType.max; ++i) { if (p == i.ToString()) { at = i; break; } } if (at < UIAtlasType.公用数字图包1 || at >= UIAtlasType.max) { return(false); } //Color color = mFontColorTagStack.Peek(); UISprite sp = UIViewHelper.AddUISprite(底板.gameObject, at, n + m, null); if (null == sp) { return(false); } float canUseSpace = CalcNowLineCanUsedSpace(); if (sp.width > canUseSpace) { Destroy(sp.gameObject); if (DoChangeLine()) { DoAddImageAnim(p, n, m, fps); } return(true); } int depth = 0; if (!mHasedAtlas.Contains(at)) { mHasedAtlas.Add(at); depth = mHasedAtlas.Count - 1; } else { depth = mHasedAtlas.IndexOf(at); } UISpriteAnimation spanim = sp.gameObject.AddComponent <UISpriteAnimation>(); spanim.namePrefix = n; spanim.framesPerSecond = fps; sp.depth = 层级 + depth; // if(sp is UISprite) // (sp as UISprite).OnAtlasLoadOvered0 += new UISpriteEx.EventHandler0(spanim.RebuildSpriteList); OnUnitAddBefore(); Vector3 pos = new Vector3(mNowWritePos.x - (视图尺寸.x - (float)sp.width) * 0.5f, mNowWritePos.y - sp.height * 0.5f); sp.transform.localPosition = pos; OnUnitAdded(sp); return(true); }
bool DoAddImage(string p, string n) { if (NextTextIsNotShow) { return(true); } if (行数限制 > 0 && mNowLineCount >= 行数限制) { return(true); } UIAtlasType at = UIAtlasType.max; for (UIAtlasType i = UIAtlasType.公用数字图包1; i < UIAtlasType.max; ++i) { if (p == i.ToString()) { at = i; break; } } if (at < UIAtlasType.公用数字图包1 || at >= UIAtlasType.max) { return(false); } //Color color = mFontColorTagStack.Peek(); UISprite sp = UIViewHelper.AddUISprite(底板.gameObject, at, n, null); if (null == sp) { return(false); } float canUseSpace = CalcNowLineCanUsedSpace(); if (sp.width > canUseSpace) { Destroy(sp.gameObject); if (DoChangeLine()) { DoAddImage(p, n); } return(true); } int depth = 0; if (!mHasedAtlas.Contains(at)) { mHasedAtlas.Add(at); depth = mHasedAtlas.Count - 1; } else { depth = mHasedAtlas.IndexOf(at); } float size_w = mTransSizeWStack.Peek(); float size_h = mTransSizeHStack.Peek(); bool sliced = false; if (size_w > 0) { sp.width = (int)size_w; sliced = true; } if (size_h > 0) { sp.height = (int)size_h; sliced = true; } if (sliced) { sp.type = UISprite.Type.Sliced; } else { sp.MakePixelPerfect(); } sp.depth = 层级 + depth; OnUnitAddBefore(); Vector3 pos = new Vector3(mNowWritePos.x - (视图尺寸.x - (float)sp.width) * 0.5f, mNowWritePos.y - sp.height * 0.5f); sp.transform.localPosition = pos; OnUnitAdded(sp); return(true); }
public void AddRefAtlas(UIAtlasType t) { mRefAtlasList.Add(t); mWaitAtlasList.Add(t); }