I want to make a grid item placement system, and I want to use a Tile map to mark the Tiles of placed items. I have a square Sprite Renderer, and its draw mode is Tiled. It can be adjusted to match the size of the items I want to place. As long as I get the Tile information in the square, I can determine whether the item can be placed. But I don’t know how to get the information of all Tiles in the square. This is the part I find difficult.
Don’t store “the information” in Unity. Store it yourself in an appropriate collection, perhaps a 2-dimensional array of your data structures, or perhaps a VectorInt2-indexed Dictionary.
If you’re using it to author a level, make a level editor for it and again, store it in your own containers, perhaps in that case ScriptableObjects or some other form of data storage.
Use Unity and the tiles only to present your data to the user, choosing how to visualize it.
Tile-based / grid-based 2D games: match3, tetris, chips challenge, rogue, etc:
For any tile-based game such as Match3 or Tetris or a grid-based Roguelike, do all the logical comparisons in your own data storage mechanism for the tiles, such as a 2D array of tiles.
Otherwise you needlessly bind your game logic into Unity objects and the Unity API, making it about 10x more complicated than it needs to be.
If you have no idea how to work with 2D arrays, hurry to some basic C# tutorials for the language portions of it, then look at any good tutorial that uses a 2D array
Here is my Match3 demo using this technique of storing data in a grid. Full source linked in game comments.
It stores all of its data in a 2D array:
PieceController[,] Board;
This allows for easy simple checking in code, not relying on anything like physics.
You should strive to use that pattern for all logic, then only use Unity to present what is happening in the game logic.