Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 加载纹理时设置屏幕动画_Objective C_Ios_Optimization_Cocos2d Iphone - Fatal编程技术网

Objective c 加载纹理时设置屏幕动画

Objective c 加载纹理时设置屏幕动画,objective-c,ios,optimization,cocos2d-iphone,Objective C,Ios,Optimization,Cocos2d Iphone,我的RPG类游戏有随机战斗。当玩家进入一场随机战斗时,我的游戏需要加载该战斗中使用的纹理(动画怪物、动画等)。纹理相当多,而且相当大(战斗非常图形化) 这样的过程消耗大量的时间。当它加载时,整个屏幕冻结 游戏的地图冻结了,等待时间很长——我个人觉得很烦人 我无法预加载纹理,因为在做了一些数学运算后,我意识到: 如果我在游戏开始时预装所有纹理,应用程序肯定会崩溃 如果我在玩家进入地图时预加载特定地图中使用的纹理,应用程序也很可能崩溃 我只能在需要时加载纹理,并在战斗结束后立即处理它们 我不喜欢

我的RPG类游戏有随机战斗。当玩家进入一场随机战斗时,我的游戏需要加载该战斗中使用的纹理(动画怪物、动画等)。纹理相当多,而且相当大(战斗非常图形化)

这样的过程消耗大量的时间。当它加载时,整个屏幕冻结

游戏的地图冻结了,等待时间很长——我个人觉得很烦人

我无法预加载纹理,因为在做了一些数学运算后,我意识到:

  • 如果我在游戏开始时预装所有纹理,应用程序肯定会崩溃
  • 如果我在玩家进入地图时预加载特定地图中使用的纹理,应用程序也很可能崩溃
  • 我只能在需要时加载纹理,并在战斗结束后立即处理它们
我不喜欢使用“加载屏幕”图像,因为它会影响我的游戏设计和概念。我想避免这种做法

如果我能在加载纹理的同时制作某种动画,那就太好了,这就引出了我的问题:这可能吗?你问什么样的动画?嗯,那。。。还记得《最终幻想》在加载纹理时扭曲屏幕的情景吗?差不多吧。但是,扭曲也是一个相当耗时的过程,所以可能只是一个很酷的逐帧动画或其他东西


在写这篇文章时,我意识到我可以在纹理之间进行小的暂停(有多个纹理),在这些暂停期间,我更新屏幕以表示动画的状态。但是,这种情况不太可能发生,因为每个纹理都是2048x2048,因此动画将以相当慢(而且令人讨厌)的速度刷新。我也希望避免这种情况。

因为战斗应该是随机的,所以有可能在下一场战斗发生之前预加载纹理吗?然后,只要装载完成,战斗就可以开始

  • 游戏决定战斗应该很快发生
  • 生成随机遭遇(怪物/背景等?)
  • 加载遭遇战的纹理
  • 加载纹理后开始遭遇

  • 战斗仍然是随机的,只是在用户意识到战斗即将发生之前,遭遇战已经确定了一点。

    既然战斗应该是随机的,那么有可能在下一场战斗发生之前预加载纹理吗?然后,只要装载完成,战斗就可以开始

  • 游戏决定战斗应该很快发生
  • 生成随机遭遇(怪物/背景等?)
  • 加载遭遇战的纹理
  • 加载纹理后开始遭遇

  • 战斗仍然是随机的,只是在用户意识到战斗即将发生之前,战斗已经确定了一点。

    您可以先加载低分辨率的纹理,然后在后台线程(我认为是NSOperation)中开始加载较大的纹理,并在完成后“交换”它们


    至于动画,很多游戏都是在玩家离得很远的时候加载小纹理开始的,当它们越来越近时,高分辨率的纹理会在

    中“淡出”,你可以先加载低分辨率的纹理,然后在后台线程(我想是NSOperation)中开始加载较大的纹理,完成后“交换”它们


    至于动画,很多游戏都是在玩家离得很远的时候加载小纹理开始的,当它们越来越近时,高分辨率的纹理会在类似的绑定中“褪色”,我选择了

  • 将所有动画纹理转换为gzip PVR。加载时间(取决于设备)提高了2到4倍。任何由PVR转换引起的人工制品在运动中都不明显
  • 我预加载空闲动画(几乎总是打开的,除了在使用技能或受伤时。我在战斗场景淡入时这样做。我自己控制淡入速度为50毫秒,在每一帧我启动一个空闲动画的预加载(最多有8个,它们需要20毫秒左右)
  • 我有一个“交战”类,可以提前计算整个战斗。当一个动画变得不需要时,我会卸载它。另外,在“受伤”动画中,我会预取下一个技能动画
  • 充满乐趣。祝你的游戏好运

    注意:不要相信模拟器的实际响应时间。快速转到设备以确定是否确实存在性能问题


    pps.关于第1点,这导致我的应用程序大幅度缩小。

    在类似的绑定中,我选择

  • 将我的所有动画纹理转换为gzipped PVR。加载时间(取决于设备)提高了2到4倍。任何由转换为PVR引起的伪影在运动中都不明显
  • 我预加载空闲动画(几乎总是打开的,除了在使用技能或受伤时。我在战斗场景淡入时这样做。我自己控制淡入速度为50毫秒,在每一帧我启动一个空闲动画的预加载(最多有8个,它们需要20毫秒左右)
  • 我有一个“交战”类,可以提前计算整个战斗。当一个动画变得不需要时,我会卸载它。另外,在“受伤”动画中,我会预取下一个技能动画
  • 充满乐趣。祝你的游戏好运

    注意:不要相信模拟器的实际响应时间。快速转到设备以确定是否确实存在性能问题


    pps.关于第1点,这导致我的应用程序的尺寸显著减小。

    但即便如此,我也必须加载这类战斗所需的纹理。如果游戏决定“很快就会有一场战斗。”