Как правило, в Unity мы не создаем экземпляр примитива и не добавляем к нему компоненты вручную, что, как правило, не лучший способ сделать что-либо в долгосрочной перспективе, поскольку непрограммистам сложно изменить функциональность. Хуже того, требуется изменение кода, чтобы изменить то, как все работает! Главное преимущество Unity - это огромный полнофункциональный визуальный редактор, мы должны использовать его как можно чаще, иначе какой смысл вообще использовать Unity?
Вместо этого вы, вообще говоря, хотите создать префаб каждого из этих объектов, куба и сферы, и прикрепить скрипт к обоим. Затем, вместо того, чтобы создавать примитивную сферу и пытаться создать ее с нуля в скрипте, вы просто вызываете GameObject.Instantiate (), чтобы создать новую сферу тут же.
public class cubeControls : MonoBehaviour
{
// Constants for object rotation
public GAmeObject spherePrefab;
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.X))
{
Instantiate(spherePrefab, transform.position, transform.rotation);
}
}
}
Это имеет несколько преимуществ: во-первых, у вас есть полный контроль над сферой внутри редактора, вы хотите прикрепить различные компоненты к вашей сфере? Вы можете сделать это без изменения кода! Хотите иметь немного другие параметры? Нет проблем. Хочет ли художник добавить крутой след в сферу? Они могут сделать это без помощи программиста.
Если вам нужно изменить переменные в сфере (например, чтобы передать, скажем, оставшиеся точки попадания куба?), Вы можете вызвать GetComponent () для только что созданного префаба сферы и вызывать функции / редактировать переменные по своему усмотрению.