More Optimised GameObject.Find() for 100+ Game Objects

I’m developing a tile room building tool for a management / base building game. Every time a new tile is placed the script runs a couple GameObject.Find() to see if there is a tile to the left, right, in front or behind as the coordinates are in the name of the game object. This is used to automatically generate walls for tiles with no neighbors.

Currently it works flawlessly but as a management simulation game I need to anticipate 500+ game objects per scene. Is there a more optimised way to do this?

Ok I think I did it!

I essentially crated 2 arrays, one for the tile names (which contain the coordinates) and another array for GameObject references to the tiles. When a new tile is created a tile name and ref is added to their respected arrays at the same time, this way the name and ref have the same array ID.

When I need to check if a tile exists, instead of using GameObject.Find() I search the name array and if there is a match I grab the item from the ref array with the same ID. In fact I was able to make it work without using a single GameObject.Find().