Клонирование объекта
Добавлено: 29 янв 2014, 16:40
часто встречал вопрос, и, чтобы быстро найти ответ на форуме, пишу как
обычно, Object.Instantiate() используются для создание экземпляра префаба на сцене, но, зачастую из-за непонимания механизма префаба, никто не знает, что клонировать можно и уже существующие на сцене GO, для движка нет никакой разницы: существующий это объект или префаб
нижеследующий код клонирует ГО, на который Вы повесили скрипт, сто раз.
Примечания: копируются значения полей, но корутины нужно запускать заново.
обычно, 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--;
}
}
}
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--;
}
}
}