Решил провести простой тест на то сколько в моём случае на сцене может быть префабов с нормальным фпс, создал следующий префаб "дом" из таких составляющих (3D сцена)
-PrefabBrick - фигура куб (растянутый под кирпич) с материалом
-PrefabWallBrick - состоит из 55 PrefabBrick
-PrefabFloor - состоит из 48 PrefabWallBrick + 2 куба пол крыша
===PrefabBuild= - состоит из 5ти PrefabFloor
Данный префаб (почему-то) весит 4 Мб, я думал что в нём только сохранены позиции остальных префабов, а получается вот так.
Ну и наконец я через массив решил его заинстантить
public GameObject GameObjectBuild;
public Build build;
public Dictionary<string, Build> DictionaryBuild = new Dictionary<string, Build>();
private void SpawnBuilds(){
int buildID = 1; int x = 0; int z = 0; int step = 5;
for(int i = 0; i < 50; ++i){
DictionaryBuild[buildID.ToString()] = Instantiate(build) as Build;
DictionaryBuild[buildID.ToString()].transform.SetParent(GameObjectBuild.transform);
DictionaryBuild[buildID.ToString()].transform.position = new Vector3(x - 30, 0f, z + 30);
++buildID;
x += step;
if(x > 50){ x = 0; z -= step; }
}
}
результат запуска таков - 1шт так себе, 10шт долговато, 50шт более минуты, 150шт более 30 мин пыталось запустится но так и не запустилось (надоело ждать), при этом 16 гиг оперативы на полную...
В итоге вопрос - как правильно инстантить сборные префабы?
Я думал что в сборном префабе сохраняется информация только о позициях других префабов, таким образом он должен был весить несколько Кб, но получается вот так.
Плюс ко всему я думал что так как один префаб уже загружен то его расклонировать можно легко, но чем их больше нужно тем дольше грузится.
Подскажите как правильно и в чём моя ошибка?
UPD. да забыл, при тесте всё внутри префаба выключил, со включенными всеми мешами 1 префаб такой садил на прочь фпс...