C# 统一:场景中的游戏对象以增量方式加载,而不是同时加载

C# 统一:场景中的游戏对象以增量方式加载,而不是同时加载,c#,android,unity3d,C#,Android,Unity3d,我在Android应用程序中使用Unity。当应用程序打开时,我会在Unity场景中显示用户数据。用户数据包含文本和图像 为了在场景中加载这些数据,我做了很多 UnityPlayer.UnitySendMessage(游戏对象、函数、参数) 从Android调用Unity中的许多C脚本。每个调用都执行一个特定的任务,如加载图像、创建文本、应用文本字体等 问题是现在加载这些数据看起来是增量的(如果这个词正确的话)。因此,文本首先是可见的,几秒钟后图像显示。稍后会显示一些文字效果。这看起来很难看 即

我在Android应用程序中使用Unity。当应用程序打开时,我会在Unity场景中显示用户数据。用户数据包含文本和图像

为了在场景中加载这些数据,我做了很多
UnityPlayer.UnitySendMessage(游戏对象、函数、参数)
从Android调用Unity中的许多
C
脚本。每个调用都执行一个特定的任务,如加载图像、创建文本、应用文本字体等

问题是现在加载这些数据看起来是增量的(如果这个词正确的话)。因此,文本首先是可见的,几秒钟后图像显示。稍后会显示一些文字效果。这看起来很难看

即使需要一些时间,如何使所有UI元素同时加载?是否有一种方法可以在每个游戏对象准备好绘制之前冻结场景,以便用户看到最终输出,而不是在不同时间加载一系列UI元素

编辑:在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调用
createText(文本列表)
创建图像(图像列表)
private fun createText(文本:列表){
用于(文本中的文本){
UnityPlayer.UnitySendMessage(“Text”、“CreateText”、“Text.name+”、“+Text.fontSize+”、“+Text.bold”)
}
}
私人娱乐createImages(图像:列表){
用于(图像中的图像){
UnityPlayer.UnitySendMessage(“Image”、“CreateImage”、Image.name+”、“+Image.url+”、“+Image.size”)
}
}

在Unity上,我在不同的C#脚本中实现了相同的功能。需要注意的是,我不想提及的是,图像是从一个url下载的,该url被传递到
Unity
,就像上面的方法一样。这就是导致图像显示延迟的原因,但我同意,只要其他所有内容同时显示。

您可以将sceen作为附加内容加载,在项目填充时,将摄像头放在加载屏幕上,并且只切换一次。此外,您可以先禁用游戏对象的
渲染器
,然后立即启用它们(或者如果合适,整个gameObject
SetActive(false)
)。虽然也许你也可以做一些事情来加速长时间的加载,或者如果不可行,至少可以改善对它的感知——例如,让相机放大行星/宇宙/房子,显示一些粒子/漩涡/彩色动画,进行戏剧性的音乐介绍,BugFinder和Philipp Lenssen都提供了很好的想法,基本上是在所有对象都被创建之前隐藏所有对象。但如果你看到这些都在逐渐累积(这个词对我来说很有用),那就意味着它是在几个帧上发生的,这让我很惊讶。你能告诉我们调用UnityPlayer.UnitySendMessage的代码吗?我很好奇为什么这些会发生在多个帧上,如果这是他们正在做的事情的话。@StevensMiller当然,我已经添加了上面的代码。我还试图找出这一点,以了解这是否能够实现。添加动画或闪屏确实隐藏了丑陋的部分,但如果我能知道这是否可能,那就太好了。非常感谢@谢谢你的建议。这是我心中的想法,但我想知道我正在努力实现的目标是否可能,因为我可以在我的应用程序的不同地方应用它。再次感谢!!