Самое простое решение - инициализировать объекты в методе Start () следующим образом и установить их неактивными следующим образом:
Start() {
sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
sphere.GetComponent<Renderer>().material.color = new Color(255, 0, 0); //color
cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.GetComponent<Renderer>().material.color = new Color(0, 255, 0);
capsule = GameObject.CreatePrimitive(PrimitiveType.Capsule);
capsule.GetComponent<Renderer>().material.color = new Color(0, 25, 230);
capsule.transform.SetParent(gameObject.transform);
capsule.SetActive(false);
cube.transform.SetParent(gameObject.transform);
cube.SetActive(false);
sphere.transform.SetParent(gameObject.transform);
}
И просто активировать нужный объект в методе Update () следующим образом
Update() {
if (Input.GetMouseButtonDown(0)) {
counter++;
Debug.Log(counter);
switch(counter) {
case 1:
sphere.SetActive(true);
cube.SetActive(false);
capsule.SetActive(false);
break;
case 2:
sphere.SetActive(false);
cube.SetActive(true);
capsule.SetActive(false);
break;
case 3:
sphere.SetActive(false);
cube.SetActive(false);
capsule.SetActive(true);
counter=0;
break;
}
}
}
Присоедините этот скрипт к пустому GameObject, и он должен работать
Для использования твердого тела добавьте Start ()
capsule.AddComponent<Rigidbody>();
sphere.AddComponent<Rigidbody>();
cube.AddComponent<Rigidbody>();