Android Cocos2dx C++;处理许多纹理 我目前使用COCOS2DX C++版本2.0.1。我知道这是cocos2dx的一个旧版本,但我最初开始使用它,并且已经用它制作了大部分游戏,我真的不想在这个时候切换版本。我现在遇到的问题是,我的整个游戏大约有3首完整的歌曲,6个音效和很多纹理。我有大约4张使用.plist/.pvr方法的sprite表,每张大约有70帧。现在我觉得我一定是做错了什么,因为我觉得很多游戏都有比这更多的数据,它们可以加载得很好。我已经尝试了很多方法来有效地工作。我将描述每种方法以及我在每种方法中遇到的问题

Android Cocos2dx C++;处理许多纹理 我目前使用COCOS2DX C++版本2.0.1。我知道这是cocos2dx的一个旧版本,但我最初开始使用它,并且已经用它制作了大部分游戏,我真的不想在这个时候切换版本。我现在遇到的问题是,我的整个游戏大约有3首完整的歌曲,6个音效和很多纹理。我有大约4张使用.plist/.pvr方法的sprite表,每张大约有70帧。现在我觉得我一定是做错了什么,因为我觉得很多游戏都有比这更多的数据,它们可以加载得很好。我已经尝试了很多方法来有效地工作。我将描述每种方法以及我在每种方法中遇到的问题,android,c++,ios,loading,cocos2d-x-2.x,Android,C++,Ios,Loading,Cocos2d X 2.x,我在应用程序启动时做了一个加载屏幕,但我发现似乎无法异步加载.plist/.pvr,所以我别无选择,只能逐个加载每个.PNG图像,不再使用sprite表。我觉得这是一个荒谬的方式,但我没有找到另一个解决办法。因此,通过使用这种方法,游戏确实会加载(这需要一些时间,但确实有效),并且由于所有图像都已预加载,因此游戏运行平稳。这里的问题是,当我点击home(主页)按钮并点击我的游戏图标以恢复时,需要花费大量时间重新加载所有纹理,在应用程序恢复之前,我需要等待很长时间。为了解决这个问题,我尝试了以下方

我在应用程序启动时做了一个加载屏幕,但我发现似乎无法异步加载.plist/.pvr,所以我别无选择,只能逐个加载每个.PNG图像,不再使用sprite表。我觉得这是一个荒谬的方式,但我没有找到另一个解决办法。因此,通过使用这种方法,游戏确实会加载(这需要一些时间,但确实有效),并且由于所有图像都已预加载,因此游戏运行平稳。这里的问题是,当我点击home(主页)按钮并点击我的游戏图标以恢复时,需要花费大量时间重新加载所有纹理,在应用程序恢复之前,我需要等待很长时间。为了解决这个问题,我尝试了以下方法:我学习了setPreserveEGLContextOnPause()以及如何在按下home按钮时使纹理不会丢失。所以我终于想出了如何设置它,它实际上解决了这个问题,但我只使用了大约四分之一的精灵来测试它,看看它使用了多少内存,我看到它已经使用了345MB的RAM!这意味着我的整个游戏可能会使手机内存不足

  • 在经历了第一种方法的所有不幸之后,我真的确信我做错了什么,因为我还没有看到过一款安卓游戏在按下home(主页)按钮后无法返回。我知道我用了很多精灵,但我只能把它们放低很多。我很想继续使用.plist/.pvr方法,但我似乎找不到在显示加载屏幕时加载这些文件类型的方法

  • 我也尝试过只需按照场景初始化方法加载每件事情。这也会导致切换场景之间的时间延迟相同


  • 总的来说,我真的被卡住了。我觉得我一定是做错了什么,因为我的游戏是一个非常简单的益智游戏,从任何角度来说都不算大。我还想找到一个既适用于iPhone又适用于android手机的解决方案。任何帮助都将不胜感激。谢谢。

    1*使用.mp3格式播放声音。 2*像这样加载应用程序代理中的所有纹理

    #if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
    
        CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(  gsd->getFullPath("name.plist")->getCString()  )
    
    #endif
    #if  (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    
        CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile( "name.plist" );        
    #endif
    #if  (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    
        CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile( "name.plist" );
    
    #endif
    

    我不敢告诉你,至少将cocos2dx升级到2.2.3将对你和你的问题非常有帮助,因为cocos2dx改变了许多与性能相关的代码