Я использую Unity в своем приложении Android. Когда приложение открывается, я показываю пользовательские данные в сцене Unity. Пользовательские данные содержат тексты и изображения.
Чтобы загрузить эти данные в сцену, я совершаю множество UnityPlayer.UnitySendMessage(GameObject,Function,Params)
вызовов для многих C#
скриптов в Unity из Android. Каждый из этих вызовов выполняет определенную задачу c, такую как загрузка изображения, создание текста, применение шрифта текста и т. Д. c.
Проблема заключается в том, что загрузка этих данных сейчас выглядит добавочной (если это правильное слово). Таким образом, текст виден первым, а через доли секунды изображение показывает. Некоторые текстовые эффекты показаны позже. Это выглядит ужасно.
Как я могу заставить все элементы интерфейса загружаться одновременно, даже если это занимает некоторое время? Есть ли способ заморозить сцену до того, как каждый игровой объект будет готов к рисованию, чтобы пользователь видел окончательный результат в том виде, в каком он должен быть, а не в виде последовательности загрузки элементов пользовательского интерфейса в разное время.
Редактировать: Вкл. Android сторона, это упрощенный пример того, как я делаю вызовы
//I call these methods one after the other which make Unity calls
createText(textList)
createImages(imageList)
private fun createText(texts: List<Text>) {
for (text in texts) {
UnityPlayer.UnitySendMessage("Text", "CreateText", text.name+","+text.fontSize+","+text.bold)
}
}
private fun createImages(images: List<Image>) {
for (image in images) {
UnityPlayer.UnitySendMessage("Image", "CreateImage", image.name+","+image.url+","+image.size)
}
}
На Unity
у меня есть реализации для одного и того же в различных C# сценариях. Стоит отметить, и мой недостаток в том, что я не упомянул, что изображения загружаются с URL-адреса, который передается в Unity
, как описано выше. Вот почему возникает задержка в изображениях, но я в порядке с этим, если все остальное появляется одновременно.