Что для вас "размер ресурса"?
Если вы рассматриваете файл изображения, то этот файл изображения имеет размер на диске, который может или не может быть сжат, со сжатием в зависимости от содержимого файла. Файл изображения загружается в текстуру, которая имеет размер в памяти. Это тоже может быть сжат (PVR) или нет. Наконец, размер изображения на диске, степень сжатия и представление памяти (глубина в битах и т. Д.) - все зависит от того, сколько времени потребуется для загрузки этого изображения.
Если вы распространите это на другие типы ресурсов, такие как звуковые файлы, списки свойств, базы данных, очень трудно будет контролировать индикатор выполнения на основе произвольного, трудно определяемого «размера ресурса».
Короче говоря: вы можете получить размер файла. Вы можете основывать свою загрузочную полосу на этом, но она не будет отражать фактическое время загрузки вообще.
Вы также можете оценить или рассчитать объем памяти, который занимает ресурс, т. Е. Текстура 2048x2048x32bit составляет 16 МБ - если только она не сжимается даже в памяти (текстуры PVR). Но это требует глубокого знания структуры данных каждого актива. Плюс, например, если вы загрузите только четыре из этих текстур, ваш индикатор выполнения будет подпрыгивать до 25%, 50%, 75% и 100% после каждой текстуры - у вас нет возможности узнать, «как далеко в загрузку текстуры» устройство чтобы в таких случаях прогресс прогрессировался плавно.
Короче говоря:
Большинство индикаторов просто учитывают , сколько ресурсов загружается. Это вы знаете из кода, который вы поместили на сцену, т.е. какие изображения, аудио файлы и т. д. вы загружаете. Если вы не загрузите всю сцену из файла данных, например, если вы используете какой-либо инструмент проектирования, вы не будете знать количество ресурсов во время выполнения до тех пор, пока они не будут загружены.
Альтернативой является обновление индикатора выполнения после каждого блока ресурсов, чтобы можно было разделить прогресс выполнения на несколько конкретных шагов. Это особенно полезно, если на загрузку небольшого количества ресурсов уходит большая часть времени, и они представляют собой атомарные порции (т.е. текстурный атлас 2048x2048), загрузка которых занимает несколько долей секунды без какой-либо возможности обновления индикатора выполнения.
Наконец, если вы не видите время загрузки более 3 секунд, индикатор выполнения не имеет особого смысла. В этом случае вам лучше потратить время на оптимизацию времени загрузки. Например, многое можно сделать, выбрав идеальный формат текстур, используя атласы текстур, избегая избыточных загрузок активов, отложив загрузку определенных активов или загрузив их в отдельный поток.