A way to generate walls dynamically

I have a game where you can build your own place and stuff, you can make a custom layout of the place and all, the thing is, i can’t figure out how to dynamically create the walls, i tried with Raycasts and if the ray detects another floor tile next to him then checks a bool indicating that can’t generate a wall in that space:

void CheckForWalls()
     {
         RaycastHit hitU;
         RaycastHit hitD;
         RaycastHit hitL;
         RaycastHit hitR;
 
         if (!Physics.Raycast(new Vector3(box.bounds.center.x, box.bounds.center.y, box.bounds.max.z), transform.TransformDirection(Vector3.forward), out hitU, distance))
             occupiedUp = true;
 
         if (!Physics.Raycast(new Vector3(box.bounds.center.x, box.bounds.center.y, box.bounds.min.z), transform.TransformDirection(Vector3.back), out hitD, distance))
             occupiedDown = true;
 
         if (!Physics.Raycast(new Vector3(box.bounds.max.x, box.bounds.center.y, box.bounds.center.z), transform.TransformDirection(Vector3.left), out hitL, distance))
             occupiedLeft = true;
 
         if (!Physics.Raycast(new Vector3(box.bounds.min.x, box.bounds.center.y, box.bounds.center.z), transform.TransformDirection(Vector3.right), out hitR, distance))
             occupiedRight = true;
     }

I don’t know if it’s because the floors are detecting each other, but there are some occasions where the detection doesn’t work really well. All kind of help is appreciated!

Nvmnd i got it.
In case someone needs the code, here it is:

It will look for empty spaces to generate the walls later.

void CheckForWalls()
    {
        RaycastHit hitU;
        RaycastHit hitD;
        RaycastHit hitL;
        RaycastHit hitR;

        if (!Physics.Raycast(new Vector3(box.bounds.center.x, box.bounds.center.y, box.bounds.max.z), transform.TransformDirection(Vector3.forward), out hitU, distance, floorLayer))
            notOccupiedUp = true;
        else
            notOccupiedUp = false;

        if (!Physics.Raycast(new Vector3(box.bounds.center.x, box.bounds.center.y, box.bounds.min.z), transform.TransformDirection(Vector3.back), out hitD, distance, floorLayer))
            notOccupiedDown = true;
        else
            notOccupiedDown = false;

        if (!Physics.Raycast(new Vector3(box.bounds.max.x - 0.1f, box.bounds.center.y, box.bounds.center.z), transform.TransformDirection(Vector3.left), out hitL, distance, floorLayer))
            notOccupiedLeft = true;
        else
            notOccupiedLeft = false;

        if (!Physics.Raycast(new Vector3(box.bounds.min.x + 0.1f, box.bounds.center.y, box.bounds.center.z), transform.TransformDirection(Vector3.right), out hitR, distance, floorLayer))
            notOccupiedRight = true;
        else
            notOccupiedRight = false;
    }