C#

Помогите, делаю игру 2д юнити!!!

Я хочу сделать спавн шаров, которые дают урон главному герою 2д, от них нужно уворачиваться наверх и вниз, но когда я создаю в иерархии вариант 1 и в этом варианте point1 и point1(шары эти) и таких вариантов должно быть 3, я копирую один вариант и он дублируется, тоесть этих плинтов не 2 а 4 теперь, а мне нужно СКОПИРОВАТЬ чтобы сделать много вариантов а оно ДУБЛИРУЕТСЯ, помогите я вас прошу, как мне скопировать, я уже и ctrl+d и c и как ток угодно... Что делать?
Вы хотите создать несколько вариантов с разными шарами, которые дают урон главному герою, но при копировании объектов в иерархии получаете дубликаты.

Предлагаю следующее решение:

Вместо того чтобы просто копировать объекты в иерархии, создайте префабы. Префабы - это механизм в Unity, который позволяет создавать настраиваемые и многократно используемые игровые объекты.

Выберите вариант 1 в иерархии, и перетащите его в папку "Assets" (ресурсы) вашего проекта. Это создаст префаб вашего варианта 1.

Теперь, чтобы создать новые варианты, просто перетащите созданный префаб из папки "Assets" обратно в иерархию. Это создаст новый объект на основе префаба, и вы сможете изменять шары для каждого варианта независимо.

Если вам нужно внести изменения во все варианты сразу, вы можете изменить префаб в папке "Assets", и все объекты, созданные на основе этого префаба, автоматически обновятся.

Используйте этот подход для создания всех вариантов со своими наборами шаров. Вам не придется копировать объекты в иерархии и сталкиваться с проблемами дублирования.
Николай Ворошилов
Николай Ворошилов
2 746
Лучший ответ
Если вы хотите создать копию объекта, но не хотите, чтобы он дублировал все дочерние объекты, вам нужно использовать функцию "Duplicate Without Children" (дублировать без дочерних объектов).

Для этого выберите объект, который вы хотите скопировать, затем зажмите клавишу "Alt" и перетащите его в нужное место в иерархии. Это создаст копию объекта без дочерних объектов.

Если вы хотите создать много копий объекта, вы можете использовать функцию "Duplicate" (дублировать) и затем переместить каждую копию в нужное место в иерархии. Если вы хотите создать много копий объекта с разными названиями, вы можете использовать функцию "Rename" (переименовать) для каждого объекта после копирования.
Я бы программно спавнил.
 //скрипт вешается на пустой объект либо на камеру
public GameObject circle;
public float deltaTimeSpawn = 2.0f;
public float timeToDestriyCircle = 10.0f;

// Start is called before the first frame update
void Start()
{
if (circle != null)
{
StartCoroutine(Spawn());
}
}

// Update is called once per frame
void Update()
{

}

IEnumerator Spawn()
{
while (!finish)
{
GameObject go = Instantiate(circle, Vector3.up * Random.Range(-5.0f, 5.0f), Quaternion.identity);
Destroy(go, timeToDestriyCircle);
yield return new WaitForSeconds(deltaTimeSpawn);
}
}