Question by
Arvis_1 · Feb 29, 2020 at 04:15 PM ·
uiinstantiatebuttons
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);
}
}
Comment
Answer by tormentoarmagedoom · Mar 01, 2020 at 01:28 AM
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.
Answer by abolfazlhosnian · Mar 01, 2020 at 01:29 PM
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);
}