Search Unity

Tile Preview in a Custom Inspector

Discussion in '2017.2 Beta' started by snorkysnark, Aug 25, 2017.

  1. snorkysnark

    snorkysnark

    Joined:
    Oct 31, 2016
    Posts:
    4
    I was wondering, is there a way to render an asset preview for a custom tile?
    I suppose I could create a custom inspector, override RenderStaticPreview, take the tile's sprite's texture (which would be tricky as it's a Multiple sprite) and multiply every pixel by the tile's color, but I think there should be an easier way since Unity already does all that for default tiles.
    Also, why not make a preview render automatically for any custom tile that derives from Tile, without the need of a custom incpector (it has a Sprite, what else do you need?) ?
    This is especially annoying because in my project I have a custom inspector for the Tile class, so I don't have default previews at all, and it becomes a lot harder to navigate in the assets.
     
    aka3eka likes this.
  2. snorkysnark

    snorkysnark

    Joined:
    Oct 31, 2016
    Posts:
    4
    Ok, here's what I did for now. But this really should be a default feature.
    Code (CSharp):
    1. public override Texture2D RenderStaticPreview(string assetPath, Object[] subAssets, int width, int height)
    2.     {
    3.         Tile tile = AssetDatabase.LoadAssetAtPath<Tile>(assetPath);
    4.         if (tile.sprite != null)
    5.         {
    6.             Texture2D spritePreview = AssetPreview.GetAssetPreview(tile.sprite); // Get sprite texture
    7.  
    8.             Color[] pixels = spritePreview.GetPixels();
    9.             for (int i = 0; i < pixels.Length; i++)
    10.             {
    11.                 pixels[i] = pixels[i] * tile.color; // Tint
    12.             }
    13.             spritePreview.SetPixels(pixels);
    14.             spritePreview.Apply();
    15.  
    16.             Texture2D preview = new Texture2D(width, height);
    17.             EditorUtility.CopySerialized(spritePreview, preview); // Returning the original texture causes an editor crash
    18.             return preview;
    19.         }
    20.         return null;
    21.     }
     
    SDriver, Psyboyo, aka3eka and 6 others like this.
unityunity