I would like to see a built-in tilemap editor for creating 2D levels.
This would make for easier management of level-building, reduce memory overhead, and possibly even reduce draw calls if it is built for that.
Creating a tilemap would produce a single tilemap object, which could be universally scaled, moved, have a script applied to it, etc. Multiple tilemaps could be added into any scene, so they could be set up to be different layers, or used in different sections, etc. A user could create a large sprawling tilemap for a whole level, or a set of smaller tilemaps, or even just a tilemap or two in a few desired locations. The tilemap might work best as a new type of renderer, inheriting a few attributes of the sprite renderer, (most notably the "order in layer" attribute.)
The editing functionality should be a method of selecting a brush/tool and paint in a desired effect, for example filling in with a particular image. Any attribute a tile can posses should be able to be painted into the tilemap (even if there is not actual tile graphic on that space.) Painting in multiple attributes would be a good feature to have as well. An option to select an individual tile and change individual attributes should also exist.
When editing a tilemap, its dimensions should be arbitrary and altered on-the-fly; the user should not have to enter a specific size for the tilemap but should just be able to add tiles to expand the tilemap to its maximum capacity. There should be no problems with adding a new tile above, below, or to either side of the existing tiles.
Any individual tile can be flipped in x or y, rotated in 90 degree increments, and have its color set. Ideally capacity should also be given to allow any individual tile to scroll/pan. Possibly include the functionality to have any individual tile set its order in layer to a value other than that of the whole tilemap, but that same functionality can also be achieved by using multiple tilemaps so it is not completely necessary.
Each tile can set its own collision. This is one of the most important features of having a tilemap. Users can set a simple solid/non-solid variable for each tile, or choose from a user-created array of collision models. (This would enable slopes and partial solidity.)
Individual custom properties should be able to be applied to individual tiles, accessible via scripts. This is very important to enable a game to respond to special tiles and triggers.
When editing a tilemap, it would be ideal to allow the user to create pre-set tiles with all desired attributes (i.e. setting a particular image to use a particular collision.) Then the user can paint in these pre-set tiles as desired. Ideally the preset tiles should be contained in a separate file so that multiple tilemaps can use the same tileset. For convenience and organization it may be best to allow creation of multiple tileset files. They should have the same functionality as prefabs in that an individual tile can be changed from its prefab form, and all the existing "pre-fabbed" tiles can be adjusted by changing the prefab master. For convenience in the editor it might work best to have a tile sever its connection to the prefab if any attribute is altered.
However this functionality may not be as needed if the regular brush can easily select multiple values to paint into a map.
It would be most ideal if an auto-adjustment option were included with the editor that would automatically fit moderately-complex designs together; for example if a user create a set of tiles that has edges and corners, the user should be able to paint in the base tile and have the adjacent tiles change to use those edge tiles if they are on an edge, randomly select a variation tile if available, and/or fit a pattern of tiles.
Ideally, capacity should be given to allow dynamic alteration of tilemaps in-game. As it would be a complicated process, I have no problem with holding off on that one for a future update. A dynamic tilemap might even be a completely separate entity.