Я работаю над воспроизведением игры Deepworld. Я настраиваю генерацию мира, используя карты массивов и некоторую специальную логику. Я создаю сотни объектов за секунды. Это разрушает производительность.
Даже нажатие кнопки воспроизведения занимает некоторое время, и довольно сложно выйти из режима воспроизведения, так как это в основном 1 кадр в секунду.
Как я должен отбирать все, что не находится в поле зрения камеры. Я не понимаю никакой логики в отношении представления камеры в С#.
Если бы я знал больше о том, как я могу получить доступ к фактическому местоположению и размеру поля зрения камеры, я, вероятно, мог бы сделать что-то в этом роде.
... {
for (int y = 0; y < height; y++) {
Vector3 pos = new Vector3(-width / 2 + x + 0.5f, objectHolder.transform.position.y, -height / 2 + y + 0.5f);
// Imaginary If Conditions Ahead
if (pos.x <= CameraViewMaxX && pos.x >= CameraViewMinX && pos.y <= CameraViewMaxY && pos.y >= CameraViewMinY) {
Gizmos.color = (map[x, y] == 1)? Color.white : Color.clear;
Gizmos.DrawCube(pos, Vector3.one);
if (map[x, y] == 0) {
Instantiate(block, pos, objectHolder.transform.rotation);
}
}
// Back to Normal
}
}
Я не знаю, в каком направлении двигаться, и я не знаю, как физически реализовать это в моей игре.
Я знаю, что я должен загружать только блоки в представлении, например Terraria или Deepworld. Это единственная причина, по которой эти игры идут гладко. Это из-за выбраковки.