/// <summary> /// Info String drawn at the bottom of the Preview /// </summary> public override string GetInfoString() { YuLegoImage image = target as YuLegoImage; Sprite sprite = image.sprite; int x = (sprite != null) ? Mathf.RoundToInt(sprite.rect.width) : 0; int y = (sprite != null) ? Mathf.RoundToInt(sprite.rect.height) : 0; return(string.Format("Image Size: {0}x{1}", x, y)); }
public static LegoImageMeta Create(YuLegoImage image) { var meta = new LegoImageMeta { SpriteId = image.sprite == null ? null : image.sprite.name, LegoColor = LegoColorMeta.Create(image.color), Material = image.material == null ? null : image.material.name, RaycastTarget = image.raycastTarget, ImageType = image.type, FillMethod = image.fillMethod, FillOriginType = image.fillOrigin, FillAmount = image.fillAmount, Clockwise = image.fillClockwise, PreserveAspect = image.preserveAspect, }; return(meta); }
/// <summary> /// Draw the Image preview. /// </summary> public override void OnPreviewGUI(Rect rect, GUIStyle background) { YuLegoImage image = target as YuLegoImage; if (image == null) { return; } Sprite sf = image.sprite; if (sf == null) { return; } YuLegoSpriteDrawUtility.DrawSprite(sf, rect, image.canvasRenderer.GetColor()); }
private static void InitPreviewObject() { Transform TextContent = previewObject.transform.Find ("Canvas/PreViewUI/Text_Content"); YuLegoText preViewContent = TextContent.GetComponent <YuLegoText>(); if (preViewContent == null) { preViewContent = TextContent.gameObject.AddComponent <YuLegoText>(); preViewContent.text = "文本内容"; } Transform TextTitle = previewObject.transform.Find ("Canvas/PreViewUI/Text_Title"); YuLegoText preViewTitle = TextTitle.GetComponent <YuLegoText>(); if (preViewTitle == null) { preViewTitle = TextTitle.gameObject.AddComponent <YuLegoText>(); preViewTitle.text = "标题"; } Transform TitleBgImage = previewObject.transform.Find ("Canvas/PreViewUI/Image_Title"); YuLegoImage preViewTitleBg = TitleBgImage.GetComponent <YuLegoImage>(); if (preViewTitleBg == null) { preViewTitleBg = TitleBgImage.gameObject.AddComponent <YuLegoImage>(); preViewTitleBg.Color = new Color(0.9f, 0.9f, 0.7f); } Transform ContentBgImage = previewObject.transform.Find ("Canvas/PreViewUI/Image_Content"); YuLegoImage preViewContentBg = ContentBgImage.GetComponent <YuLegoImage>(); if (preViewContentBg == null) { preViewContentBg = ContentBgImage.gameObject.AddComponent <YuLegoImage>(); preViewTitleBg.Color = new Color(0.4f, 0.4f, 0.4f); } }
/// <summary> /// Sprites's custom properties based on the type. /// </summary> protected void TypeGUI() { EditorGUILayout.PropertyField(m_Type, m_SpriteTypeContent); ++EditorGUI.indentLevel; { var typeEnum = (YuLegoImage.Type)m_Type.enumValueIndex; bool showSlicedOrTiled = (!m_Type.hasMultipleDifferentValues && (typeEnum == YuLegoImage.Type.Sliced || typeEnum == YuLegoImage.Type.Tiled)); if (showSlicedOrTiled && targets.Length > 1) { showSlicedOrTiled = targets.Select(obj => obj as YuLegoImage).All(img => img.hasBorder); } m_ShowSlicedOrTiled.target = showSlicedOrTiled; m_ShowSliced.target = (showSlicedOrTiled && !m_Type.hasMultipleDifferentValues && typeEnum == YuLegoImage.Type.Sliced); m_ShowTiled.target = (showSlicedOrTiled && !m_Type.hasMultipleDifferentValues && typeEnum == YuLegoImage.Type.Tiled); m_ShowFilled.target = (!m_Type.hasMultipleDifferentValues && typeEnum == YuLegoImage.Type.Filled); YuLegoImage image = target as YuLegoImage; if (EditorGUILayout.BeginFadeGroup(m_ShowSlicedOrTiled.faded)) { if (image.hasBorder) { EditorGUILayout.PropertyField(m_FillCenter); } } EditorGUILayout.EndFadeGroup(); if (EditorGUILayout.BeginFadeGroup(m_ShowSliced.faded)) { if (image.sprite != null && !image.hasBorder) { EditorGUILayout.HelpBox("This Image doesn't have a border.", MessageType.Warning); } } EditorGUILayout.EndFadeGroup(); if (EditorGUILayout.BeginFadeGroup(m_ShowTiled.faded)) { if (image.sprite != null && !image.hasBorder && (image.sprite.texture.wrapMode != TextureWrapMode.Repeat || image.sprite.packed)) { EditorGUILayout.HelpBox( "It looks like you want to tile a sprite with no border. It would be more efficient to modify the Sprite properties, clear the Packing tag and set the Wrap mode to Repeat.", MessageType.Warning); } } EditorGUILayout.EndFadeGroup(); if (EditorGUILayout.BeginFadeGroup(m_ShowFilled.faded)) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(m_FillMethod); if (EditorGUI.EndChangeCheck()) { m_FillOrigin.intValue = 0; } switch ((YuLegoImage.FillMethod)m_FillMethod.enumValueIndex) { case YuLegoImage.FillMethod.Horizontal: m_FillOrigin.intValue = (int)(YuLegoImage.OriginHorizontal)EditorGUILayout.EnumPopup("Fill Origin", (YuLegoImage.OriginHorizontal)m_FillOrigin.intValue); break; case YuLegoImage.FillMethod.Vertical: m_FillOrigin.intValue = (int)(YuLegoImage.OriginVertical)EditorGUILayout.EnumPopup("Fill Origin", (YuLegoImage.OriginVertical)m_FillOrigin.intValue); break; case YuLegoImage.FillMethod.Radial90: m_FillOrigin.intValue = (int)(YuLegoImage.Origin90)EditorGUILayout.EnumPopup("Fill Origin", (YuLegoImage.Origin90)m_FillOrigin.intValue); break; case YuLegoImage.FillMethod.Radial180: m_FillOrigin.intValue = (int)(YuLegoImage.Origin180)EditorGUILayout.EnumPopup("Fill Origin", (YuLegoImage.Origin180)m_FillOrigin.intValue); break; case YuLegoImage.FillMethod.Radial360: m_FillOrigin.intValue = (int)(YuLegoImage.Origin360)EditorGUILayout.EnumPopup("Fill Origin", (YuLegoImage.Origin360)m_FillOrigin.intValue); break; } EditorGUILayout.PropertyField(m_FillAmount); if ((YuLegoImage.FillMethod)m_FillMethod.enumValueIndex > YuLegoImage.FillMethod.Vertical) { EditorGUILayout.PropertyField(m_FillClockwise, m_ClockwiseContent); } } EditorGUILayout.EndFadeGroup(); } --EditorGUI.indentLevel; }