Exemplo n.º 1
0
    /// <summary>
    /// Draw the sprite preview.
    /// </summary>

    public override void OnPreviewGUI(Rect rect, GUIStyle background)
    {
        UISprite sprite = target as UISprite;

        if (sprite == null || !sprite.isValid)
        {
            return;
        }
        Texture2D tex = sprite.mainTexture as Texture2D;

        if (tex == null)
        {
            return;
        }
        float        interval  = 10f;
        float        width     = (rect.width - interval) / 2;
        Rect         leftRect  = new Rect(rect.x, rect.y, width, rect.height);
        Rect         rightRect = new Rect(rect.x + width + interval, rect.y, width, rect.height);
        UISpriteData sd        = sprite.atlas.GetSprite(sprite.spriteName);

        NGUIEditorTools.DrawAtlas(tex, leftRect, sd);
        NGUIEditorTools.DrawSprite(tex, rightRect, sd, sprite.color);

        //点选图片
        Event e = Event.current;

        if (e.type == EventType.MouseDown)
        {
            //下面函数通过点击的坐标,和texture、texture draw rect等信息计算出被点选的sprite
            UISpriteData click = NGUIEditorTools.GetUISpriteData(tex, sprite.atlas, leftRect, e.mousePosition);
            if (click != null)
            {
                sprite.spriteName = click.name;
                EditorUtility.SetDirty(sprite);
            }
        }
    }