Клонирование объекта

Клонирование объекта

Сообщение BenjaminMoore 29 янв 2014, 16:40

часто встречал вопрос, и, чтобы быстро найти ответ на форуме, пишу как
обычно, Object.Instantiate() используются для создание экземпляра префаба на сцене, но, зачастую из-за непонимания механизма префаба, никто не знает, что клонировать можно и уже существующие на сцене GO, для движка нет никакой разницы: существующий это объект или префаб

нижеследующий код клонирует ГО, на который Вы повесили скрипт, сто раз.
Примечания: копируются значения полей, но корутины нужно запускать заново.

Синтаксис:
Используется csharp
using UnityEngine;

public class Test : MonoBehaviour
{
    public static bool FirstInstance = true;
    public static int CountClones = 100;
    public int SomeValue = 100;

        private void Start()
    {
            if (CountClones > 0)
            {
            SomeValue--;
                var randomPosition = new Vector3(Random.Range(0, 100), Random.Range(0, 100), Random.Range(0, 100));
            var clone = Instantiate(gameObject, randomPosition, Quaternion.identity) as GameObject;
                CountClones--;
            }
    }
}
 
Последний раз редактировалось BenjaminMoore 29 янв 2014, 17:21, всего редактировалось 1 раз.
My hands are hard. My mind is core.
ring0x0000 c0x0063 | write code in rust right now
Аватара пользователя
BenjaminMoore
UNITрон
 
Сообщения: 338
Зарегистрирован: 03 янв 2013, 18:07
Skype: benjminmoore

Re: Клонирование объекта

Сообщение waruiyume 29 янв 2014, 17:18

Он, вроде, всё, что наследуется от UnityEngine.Object клонирует.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Клонирование объекта

Сообщение BenjaminMoore 29 янв 2014, 17:24

waruiyume писал(а):Он, вроде, всё, что наследуется от UnityEngine.Object клонирует.

да, это так, но при копирование компонента, создается та же копия gameObject, на котором висит этот скрипт. Вообще особо больше копировать нечего, кроме пожалуй ScriptableObject
My hands are hard. My mind is core.
ring0x0000 c0x0063 | write code in rust right now
Аватара пользователя
BenjaminMoore
UNITрон
 
Сообщения: 338
Зарегистрирован: 03 янв 2013, 18:07
Skype: benjminmoore


Вернуться в Tips & Tricks

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2