Страница 1 из 1

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

СообщениеДобавлено: 29 янв 2014, 16:40
BenjaminMoore
часто встречал вопрос, и, чтобы быстро найти ответ на форуме, пишу как
обычно, 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--;
            }
    }
}
 

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

СообщениеДобавлено: 29 янв 2014, 17:18
waruiyume
Он, вроде, всё, что наследуется от UnityEngine.Object клонирует.

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

СообщениеДобавлено: 29 янв 2014, 17:24
BenjaminMoore
waruiyume писал(а):Он, вроде, всё, что наследуется от UnityEngine.Object клонирует.

да, это так, но при копирование компонента, создается та же копия gameObject, на котором висит этот скрипт. Вообще особо больше копировать нечего, кроме пожалуй ScriptableObject