public override void OnInspectorGUI() { Event current = Event.current; base.serializedObject.Update(); if (TexturePackTool.DrawHeader("基础信息", true)) { EditorGUILayout.PropertyField(this.m_SpriteAtlas, new GUIContent("合图")); EditorGUILayout.PropertyField(this.m_Material, new GUIContent("材质球")); } //if (DrawTextToggle("Sprite Info")) //{ // EditorGUI.indentLevel = 1; // EditorGUI.BeginChangeCheck(); // EditorGUILayout.PropertyField(this.m_SpriteAtlas, new GUIContent("Sprite Atlas")); // if (EditorGUI.EndChangeCheck()) // { // Texture2D texture2D = this.m_SpriteAtlas.objectReferenceValue as Texture2D; // if (texture2D != null) // { // Material material = this.m_Material.objectReferenceValue as Material; // if (material != null) // { // material.mainTexture = texture2D; // } // } // } // GUI.enabled = true; // EditorGUILayout.PropertyField(this.m_Material, new GUIContent("Default Material"), new GUILayoutOption[0]); //} if (TexturePackTool.DrawHeader("已分组", true)) { selectGroup = EditorGUILayout.Popup("分组", selectGroup, m_GroupOption.ToArray()); string groupKey = m_GroupOption[selectGroup]; if (string.IsNullOrEmpty(groupKey) || !m_FontSpriteListDic.ContainsKey(groupKey)) { return; } texPos = new Vector2(8, 30); List <BMFontSprite> list = m_FontSpriteListDic[groupKey]; scrollPos = GUILayout.BeginScrollView(scrollPos, new GUIStyle("box")); for (int idx = 0; idx < list.Count; idx++) { OnFontSpriteElementGUI(list[idx]); } GUILayout.EndScrollView(); } }
private void OnFontSpriteElementGUI(BMFontSprite element) { Rect rect = EditorGUILayout.BeginVertical("box"); float x = element.x; float y = element.y; float width = element.width; float height = element.height; Vector2 pivot = element.pivot; string key = element.key; Texture2D spriteSheet = this.m_SpriteAtlas.objectReferenceValue as Texture2D; if (spriteSheet == null) { Debug.LogWarning("Please assign a valid Sprite Atlas texture to the [" + serializedObject.targetObject.name + "] Sprite Asset.", serializedObject.targetObject); return; } Texture2D tex = null; if (SpriteDic.ContainsKey(element.name)) { tex = SpriteDic[element.name]; } else { tex = new Texture2D((int)element.width, (int)element.height); Color[] colors = spriteSheet.GetPixels((int)element.x, (int)element.y, (int)element.width, (int)element.height); tex.SetPixels(0, 0, (int)element.width, (int)element.height, colors); tex = TexturePackTool.ScaleTextureBilinear(tex, 2); tex.Apply(); SpriteDic.Add(element.name, tex); } EditorGUILayout.BeginHorizontal(); GUILayout.Label("ID: " + element.id); GUILayout.Space(10); GUILayout.Label(element.name); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(tex, GUILayout.Width(80), GUILayout.Height(80)); EditorGUILayout.BeginVertical(); GUILayout.Space(8); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Group: "); GUILayout.TextField(element.group); EditorGUILayout.EndHorizontal(); EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Key: "); element.key = EditorGUILayout.TextField(element.key); EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { if (m_FontSpriteListDic.ContainsKey(element.group)) { List <BMFontSprite> tempGroup = m_FontSpriteListDic[element.group]; for (int i = 0; i < tempGroup.Count; i++) { if (tempGroup[i].key == element.key) { Debug.LogError("KEY 冲突"); break; } } } } GUILayout.Label(string.Format(" Size : W: {0} H: {1}", element.width, element.height)); GUILayout.Label(string.Format(" Pivot : X: {0} Y: {1}", element.pivot.x, element.pivot.y)); GUILayout.Label(string.Format(" UV : X: {0} Y: {1} W: {2} H: {3}", element.x, element.y, element.width, element.height)); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); GUILayout.Space(10); EditorGUILayout.EndVertical(); }