public static UISprite ConvertToSprite(this UITexture tex) { Vector3 pos = tex.transform.localPosition; GameObject obj = tex.gameObject; int depth = tex.depth; int width = tex.width; int height = tex.height; Vector4 border = tex.border; UIWidget.Pivot pivot = tex.pivot; string name = tex.mainTexture != null ? tex.mainTexture.name: string.Empty; UIBasicSprite.Type spriteType = tex.type; Color c = tex.color; UIBasicSprite.Flip flip = tex.flip; tex.DestroyEx(); UISprite s = obj.FindComponent <UISprite>(); s.type = spriteType; s.spriteName = name; s.depth = depth; s.width = width; s.height = height; s.flip = flip; s.color = c; s.pivot = pivot; s.GetAtlasSprite().borderLeft = (int)border.x; s.GetAtlasSprite().borderTop = (int)border.y; s.GetAtlasSprite().borderRight = (int)border.z; s.GetAtlasSprite().borderBottom = (int)border.w; s.transform.localPosition = pos; return(s); }
static int set_type(IntPtr L) { object o = null; try { o = ToLua.ToObject(L, 1); UIBasicSprite obj = (UIBasicSprite)o; UIBasicSprite.Type arg0 = (UIBasicSprite.Type)ToLua.CheckObject(L, 2, typeof(UIBasicSprite.Type)); obj.type = arg0; return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index type on a nil value" : e.Message)); } }
static int get_type(IntPtr L) { object o = null; try { o = ToLua.ToObject(L, 1); UIBasicSprite obj = (UIBasicSprite)o; UIBasicSprite.Type ret = obj.type; ToLua.Push(L, ret); return(1); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index type on a nil value" : e.Message)); } }
public override void SubReset() { Name = "Background"; Width = 140; Height = 45; Sprite_Type = UIBasicSprite.Type.Sliced; Flip_Type = UIBasicSprite.Flip.Nothing; FillDirection_Type = UIBasicSprite.FillDirection.Horizontal; Center_Type = UIBasicSprite.AdvancedType.Sliced; Left_Type = UIBasicSprite.AdvancedType.Sliced; Right_Type = UIBasicSprite.AdvancedType.Sliced; Bottom_Type = UIBasicSprite.AdvancedType.Sliced; Top_Type = UIBasicSprite.AdvancedType.Sliced; Gradient = false; Gradient_Top_Color = Color.white; Gradient_Bottom_Color = new Color(0.7f, 0.7f, 0.7f); }
private static int set_type(IntPtr L) { object obj = null; int result; try { obj = ToLua.ToObject(L, 1); UIBasicSprite uIBasicSprite = (UIBasicSprite)obj; UIBasicSprite.Type type = (UIBasicSprite.Type)((int)ToLua.CheckObject(L, 2, typeof(UIBasicSprite.Type))); uIBasicSprite.type = type; result = 0; } catch (Exception ex) { result = LuaDLL.toluaL_exception(L, ex, (obj != null) ? ex.Message : "attempt to index type on a nil value"); } return(result); }
public static UITexture ConvertToTexture(this UISprite s) { int depth = s.depth; int width = s.width; int height = s.height; UIBasicSprite.Flip flip = s.flip; UIBasicSprite.Type spriteType = s.type; GameObject obj = s.gameObject; s.DestroyEx(); UITexture tex = obj.FindComponent <UITexture>(); tex.depth = depth; tex.width = width; tex.height = height; tex.flip = flip; tex.type = spriteType; return(tex); }
private void OnGUI() { EditorGUILayout.BeginVertical("Box"); { GUILayout.Label("此批处理器作用:美术出图时没考虑使用9宫格省资源,但很多prefab已使用着不是\n9宫的碎图,这时美术重新出了新的用9宫碎图,一个个替换容易出漏,故写此工具"); mAtlas = EditorGUILayout.TextField("图集名:", mAtlas); mSprite = EditorGUILayout.TextField("碎图名:", mSprite); mSpriteType = (UISpriteType)EditorGUILayout.EnumPopup("UISprite的Type属性", mSpriteType); if (GUILayout.Button("检测碎图有无被prefab使用过(看输出log)", GUILayout.Height(30))) { Debug.Log(mAtlas + mSprite + mSpriteType); var tPrefabs = GetFindAllUsing(mAtlas, mSprite, false, mSpriteType, null, "", true); if (tPrefabs.Count <= 0) { Debug.Log("并没有使用过该碎图,图集名=" + mAtlas + ",碎图名=" + mSprite); return; } Debug.Log("总共有" + tPrefabs.Count + "个prefab使用着"); } if (GUILayout.Button("使所有prefab的碎图全使用" + mSpriteType.ToString(), GUILayout.Height(30))) { var tPrefabs = GetFindAllUsing(mAtlas, mSprite, false, mSpriteType, null, "", false); if (tPrefabs.Count == 0) { Debug.Log("并没有使用过该碎图"); } ApplySavePrefab(tPrefabs); } } EditorGUILayout.EndVertical(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.BeginVertical("Box"); { GUILayout.Label("检测图集里面有无被prefab引用.\neg:Common图集太大了,有些碎图根本就没被使用过,然而还打在图集里,浪费空间"); mCheckAtlas = EditorGUILayout.TextField("图集名:", mCheckAtlas); mIsSelectDelete = EditorGUILayout.Toggle("是否无引用碎图删除", mIsSelectDelete); if (GUILayout.Button("检测" + (mIsSelectDelete ? "时并删除无引用的碎图" : "无引用的碎图"), GUILayout.Height(30))) { var tTextures = new List <Texture>(); var tPath = AssetDatabase.FindAssets("t:Texture", new string[] { "Assets/UI/Atlas/" + mCheckAtlas + "/imgs/" }); for (int i = 0; i < tPath.Length; i++) { tTextures.Add(AssetDatabase.LoadMainAssetAtPath(AssetDatabase.AssetPathToGUID(tPath[i])) as Texture); } int tCount = 0; for (int i = 0; i < tTextures.Count; i++) { var tItem = tTextures[i]; if (GetFindAllUsing(mCheckAtlas, tItem.name, false, mSpriteType).Count <= 0) { tCount++; Debug.Log("并没使用过该碎图,所在的图集名=" + mCheckAtlas + ",碎图名=" + tItem.name + ",count=" + tCount); if (mIsSelectDelete) { File.Delete(Application.dataPath + "/UI/Atlas/" + mCheckAtlas + "/imgs/" + tItem.name + ".png"); } } } Debug.Log("原图集有" + tTextures.Count + "张碎图,无引用的有" + tCount + "张"); if (tCount > 0 && mIsSelectDelete) { Debug.LogError("删除了" + tCount + "张碎图,现还有" + (tTextures.Count - tCount) + "张碎图,请打开TP工具重新生成下吧,并应用下吧"); } } } EditorGUILayout.EndVertical(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.BeginVertical("Box"); { GUILayout.Label("eg:工程中有三个Common图集 都有同一个资源,为省空间面打算\n不使用另两个图集,则去检测图集并把prefab的引用都指定同一个图集"); mOldAtlas = EditorGUILayout.TextField("原图集名:", mOldAtlas); mOldSprite = EditorGUILayout.TextField("原碎图名:", mOldSprite); mNewAltas = EditorGUILayout.TextField("将使用的图集名:", mNewAltas); mNewSprite = EditorGUILayout.TextField("将使用的碎图名:", mNewSprite); if (GUILayout.Button("替换prefab到新图集", GUILayout.Height(30))) { var tFindOld = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/UI/Atlas/" + mOldAtlas }); var tFindNew = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/UI/Atlas/" + mNewAltas }); UIAtlas tNewAtlas = null, tOldAtlas = null; if (tFindNew != null && tFindNew.Length == 1) { var newGo = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(tFindNew[0])) as GameObject; tNewAtlas = newGo.GetComponent <UIAtlas>(); } if (tFindOld != null && tFindOld.Length == 1) { var oldGo = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(tFindOld[0])) as GameObject; tOldAtlas = oldGo.GetComponent <UIAtlas>(); } if (tNewAtlas == null || tOldAtlas == null || tOldAtlas == tNewAtlas) { Debug.LogError("图集没加载出来,检测是否正确输入吧"); return; } var tPrefabs = GetFindAllUsing(mOldAtlas, mOldSprite, false, mSpriteType, tNewAtlas, mNewSprite); if (tPrefabs.Count <= 0) { Debug.Log("旧图集并没有使用过该碎图,旧图集名=" + mOldAtlas + ",碎图名=" + mOldSprite); return; } ApplySavePrefab(tPrefabs); } } EditorGUILayout.EndVertical(); }
private List <GameObject> GetFindAllUsing(string pAltas, string pSprite, bool pChageType, UISpriteType pTargetType, UIAtlas pNewAltas = null, string pNewSprite = "", bool plog = false) { var tAllPrefab = new List <GameObject>(); var tSearchPath = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/UI/Prefab" }); for (int i = 0; i < tSearchPath.Length; i++) { tAllPrefab.Add(AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(tSearchPath[i])) as GameObject); } var tWillChangePrefabs = new List <GameObject>(); for (int i = 0; i < tAllPrefab.Count; i++) { var tPrefab = tAllPrefab[i]; var tSpriteChilds = tPrefab.GetComponentsInChildren <UISprite>(true); for (int j = 0; j < tSpriteChilds.Length; j++) { var tSpriteChild = tSpriteChilds[i]; if (tSpriteChild.atlas != null && tSpriteChild.atlas.name.Equals(pAltas) && tSpriteChild.spriteName.Contains(pSprite)) { if (plog)//输出 { Debug.Log("输出,prefab=" + tPrefab + ",所在的挂点=" + tSpriteChild.name); } if (tWillChangePrefabs.Contains(tPrefab) == false)//检测得到的prefab总数 { tWillChangePrefabs.Add(tPrefab); } if (pChageType && tSpriteChild.type != pTargetType)//改变spriteType { tSpriteChild.type = pTargetType; } if (pNewAltas != null && pNewAltas.name != pAltas) { tSpriteChild.atlas = pNewAltas; if (string.IsNullOrEmpty(pNewSprite) == false) { tSpriteChild.spriteName = pNewSprite; } } } } } return(tWillChangePrefabs); }
// Token: 0x060008DE RID: 2270 RVA: 0x00046B40 File Offset: 0x00044D40 public void AddSprite(object id, string spriteName, Vector2 pos, float width, float height, Color32 color, Vector2 pivot, float rot = 0f, UIBasicSprite.Type type = UIBasicSprite.Type.Simple, UIBasicSprite.Flip flip = UIBasicSprite.Flip.Nothing, bool enabled = true) { if (this.mAtlas == null) { Debug.LogError("Atlas must be assigned first"); return; } UISpriteCollection.Sprite sprite = default(UISpriteCollection.Sprite); INGUIAtlas atlas = this.atlas; if (atlas != null) { sprite.sprite = atlas.GetSprite(spriteName); } if (sprite.sprite == null) { return; } sprite.pos = pos; sprite.rot = rot; sprite.width = width; sprite.height = height; sprite.color = color; sprite.pivot = pivot; sprite.type = type; sprite.flip = flip; sprite.enabled = enabled; this.mSprites[id] = sprite; if (enabled && !this.mChanged) { this.MarkAsChanged(); } }
public override void DrawSubProperty() { state = UIModifierUtils.DrawContentHeader("UISprite", state); if (state) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Atlas", "DropDown", GUILayout.Width(70))) { ComponentSelector.Show <UIAtlas>(OnSelectAtlas); } EditorGUILayout.ObjectField(Atlas, typeof(UIFont), false); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Sprite", "DropDown", GUILayout.Width(70))) { NGUISettings.atlas = Atlas; NGUISettings.selectedSprite = Sprite_Name; SpriteSelector.Show(SelectSprite); } GUILayout.Label(Sprite_Name, "HelpBox", GUILayout.Height(18f)); GUILayout.Space(18f); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); { Flip_Type = (UIBasicSprite.Flip)EditorGUILayout.EnumPopup("Flip", Flip_Type); Sprite_Type = (UIBasicSprite.Type)EditorGUILayout.EnumPopup("Sprite Type", Sprite_Type); EditorGUI.indentLevel++; { if (Sprite_Type == UISprite.Type.Simple) { GUILayout.BeginHorizontal(); Gradient = EditorGUILayout.Toggle("Gradient", Gradient, GUILayout.Width(80)); EditorGUI.BeginDisabledGroup(!Gradient); { EditorGUIUtility.labelWidth = 40; Gradient_Top_Color = EditorGUILayout.ColorField("Top", Gradient_Top_Color, GUILayout.MinWidth(60)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label(" ", GUILayout.Width(80)); Gradient_Bottom_Color = EditorGUILayout.ColorField("Bottom", Gradient_Bottom_Color, GUILayout.MinWidth(60)); EditorGUIUtility.labelWidth = 70; } EditorGUI.EndDisabledGroup(); GUILayout.EndHorizontal(); } else if (Sprite_Type == UISprite.Type.Tiled) { } else if (Sprite_Type == UISprite.Type.Sliced) { Fill_Center = EditorGUILayout.Toggle("Fill Center", Fill_Center); GUILayout.BeginHorizontal(); Gradient = EditorGUILayout.Toggle("Gradient", Gradient, GUILayout.Width(80)); EditorGUI.BeginDisabledGroup(!Gradient); { Gradient_Top_Color = EditorGUILayout.ColorField("Top", Gradient_Top_Color, GUILayout.MinWidth(60)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label(" ", GUILayout.Width(80)); Gradient_Bottom_Color = EditorGUILayout.ColorField("Bottom", Gradient_Bottom_Color, GUILayout.MinWidth(60)); } EditorGUI.EndDisabledGroup(); GUILayout.EndHorizontal(); } else if (Sprite_Type == UISprite.Type.Filled) { FillDirection_Type = (UIBasicSprite.FillDirection)EditorGUILayout.EnumPopup("Flip", FillDirection_Type, GUILayout.MinWidth(20f)); Fill_Amount = EditorGUILayout.Slider("Amount", Fill_Amount, 0, 1f, GUILayout.MinWidth(20f)); Invert = EditorGUILayout.Toggle("Invert", Invert); } else if (Sprite_Type == UISprite.Type.Advanced) { Left_Type = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Left", Left_Type); Right_Type = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Right", Right_Type); Bottom_Type = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Bottom", Bottom_Type); Top_Type = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Top", Top_Type); Center_Type = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Center", Center_Type);; } } EditorGUI.indentLevel--; } GUILayout.EndVertical(); GUILayout.Space(18); GUILayout.EndHorizontal(); } }