菜鸟教程小白 发表于 2022-12-13 05:30:57

ios - 从 Spritekit 纹理图集中加载纹理的最高效方式


                                            <p><p>我无法在短短几秒钟内弄清楚如何加载我的纹理。怪物需要 20 多秒。</p>

<p>最初,我将动画放在单独的纹理图集中。它们的名称类似于 <code>sprite_002@2x~iphone.png</code>。当它们分开时,我使用了类似于 Apple 文档中的代码:</p>

<pre><code>SKTextureAtlas *atlas = ;
SKTexture *f1 = ;
SKTexture *f2 = ;
SKTexture *f3 = ;
SKTexture *f4 = ;
NSArray *monsterWalkTextures = @;
</code></pre>

<p>我的代码是:</p>

<pre><code>let names = myAtlas.textureNames as ;
for name in names {
   myTextureArray.append(myAtlas.textureNamed(name as String));
}
</code></pre>

<p>对于 6 个不同纹理图集中的 6 个动画,每个 250 帧,加载大约需要 6 秒。</p>

<p>我能够消除 60-70% 的这些帧并将所有内容都塞进一个纹理图集中,但现在我无法让它在合理的时间范围内加载。</p>

<p>我一直在尝试以下代码:</p>

<pre><code>    for i in 1...124 {
      let name = String(format: &#34;sprite_%03d&#34;, i);
      let texture = imagesAtlas.textureNamed(name);
      spriteTextures.append(texture);
    }
</code></pre>

<p>大多数游戏 iPhone 游戏没有 20 秒的加载时间,所以我知道我在这里做错了。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您的加载时间将取决于您的 map 集的大小。因此,如果您碰巧拥有大量它们并且它们很大,则需要一些时间。</p>

<p>我以前在这里看到过这类问题的变体。</p>

<p>我的建议是真正改变您解决问题的方法。随着时间的推移,这会分解工作负载并在后台进行。这就是为什么许多游戏都有加载屏幕的原因。</p>

<p>根据您的游戏,您可能会更加偷偷摸摸地在游戏运行时在后台加载纹理(或任何相关 Assets )。通常,您不需要在游戏开始时加载所有纹理。</p>

<p>当我制作我的游戏时,我做的第一件事就是创建一个后台加载器,如果我还没有的话。然后我围绕 Assets 异步加载的前提构建游戏。 </p>

<p>20 秒相当长。但是根据您的描述,这听起来需要相当长的时间。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 从 Spritekit 纹理图集中加载纹理的最高效方式,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28785179/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28785179/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 从 Spritekit 纹理图集中加载纹理的最高效方式