Instantiate button on runtime

hi guys, i want to instantiate a button to select where i want to build a module, but i cant seem to get it right as a child of a canvas. how should i do this?

public class buildModule : MonoBehaviour
{
    public Transform[] spawnPoint;
    private GameObject choosenModule;
    public GameObject selectObject;
    public static bool built = false;
    public GameObject[] buttons;
    public Canvas canvas;

    private void Update()
    {
        choosenModule = chooseModules.selectedModule;
    }
    void BuildModule()
    {
        Instantiate(buttons[0], spawnPoint[0].position, Quaternion.identity);
        Instantiate(buttons[1], spawnPoint[1].position, Quaternion.identity);
        Instantiate(buttons[2], spawnPoint[2].position, Quaternion.identity);
        Instantiate(buttons[3], spawnPoint[3].position, Quaternion.identity);

    }
    private void OnMouseOver()
    {
        if (Input.GetMouseButtonDown(0))
        {
            BuildModule();
            
        }
    }
    public void SpawnP0()
    {
        GameObject newButton = Instantiate(buttons[0]) as GameObject;
        newButton.transform.SetParent(canvas.transform, false);
    }
    public void SpawnP1()
    {
        Instantiate(choosenModule, spawnPoint[1].position, spawnPoint[1].rotation);
    }
    public void SpawnP2()
    {
        Instantiate(choosenModule, spawnPoint[2].position, spawnPoint[2].rotation);
    }
    public void SpawnP3()
    {
        Instantiate(choosenModule, spawnPoint[3].position, spawnPoint[3].rotation);
    }
}

Look at the manual.

You have different ways to use instantiate:

public static Object Instantiate(Object original);
public static Object Instantiate(Object original, Transform parent);
public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

So use the ones that directly set its parent.

just add “parentname.transform” after “Quaternion.identity”

void BuildModule()
     {
         Instantiate(buttons[0], spawnPoint[0].position, Quaternion.identity,parent.transform);
         Instantiate(buttons[1], spawnPoint[1].position, Quaternion.identity,yourparent.transform);
         Instantiate(buttons[2], spawnPoint[2].position, Quaternion.identity,yourparent.transform);
         Instantiate(buttons[3], spawnPoint[3].position, Quaternion.identity,yourparent.transform);
 
     }