• iOS渲染卡死应该如何解决


    1)iOS渲染卡死应该如何解决
    2)C#传给C++的Byte数组如何释放
    3)EAssetBundle.Unload(true)触发长时间卡顿的原因


    这是第358篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

    Platform

    Q:想问问大家是否有遇到过iOS渲染卡死的问题?表现是整个画面静止,背景音乐还在播放,但不崩溃。

    Unity版本是2018.3.35,iOS15和16以上都遇到过。

    随机出现,Xcode连真机无任何渲染相关报错,然后还不是稳定复现,所以排查比较难,只能跪求跳过坑的前辈们,感谢!

    A1:关掉多线程渲染试试。

    感谢HuangLingSheng@UWA问答社区提供了回答

    A2:提供个思路,之前有类似的问题,在安卓上发现卡死在了FMOD的线程里面。

    感谢郭艺君@UWA问答社区提供了回答

    A3:我们项目之前有过类似的情况,是32位包出的,升级64之后就没再出现过,可以试试。

    感谢许诺@UWA问答社区提供了回答

    A4:你可以试一试关闭Unity的自动渲染,然后移除Metal渲染,只保留OpenGL试一试。

    感谢haohaoling@UWA问答社区提供了回答

    A5:Unity 2018版本后开了纹理异步上传,如果资源管理不严谨,就会出现该问题,资源非法卸载的时候就会导致卡死。特别是当从AssetBundle异步LoadAsset时(包含纹理),如果卸载AssetBundle,很大概率会出现屏幕冻结。

    感谢1 9 7 3-311135@UWA问答社区提供了回答


    Script

    Q:游戏里用C#读取文件数据byte[],然后传给C++(unsigned char*),有点不明白,这个数组是同一份内存还是复制了一份?

    在C++调用free()释放会闪退,猜想应该没有复制,如果是这样,C#这边读出来先不管,C++那边还引用着,也没释放(析构时置空引用),要怎么释放呢?

    针对以上问题,有经验的朋友欢迎转至社区交流分享:
    UWA问答 | 游戏开发者互动问答社区 | 侑虎科技


    Loading

    Q:当前项目运行文件在一部分主机平台上,会有AssetBundle.Unload(true)触发的数百毫秒的CPU卡顿。

    当前运行时是有频繁加载和卸载相关的操作。但是测试对加载(限制AssetBundle.LoadAssetAsync)和卸载(限制AssetBundle.Unload)频率进行单帧限制,在部分主机平台上仍然无法解决。

    AssetBundle本身的加载尚未尝试,但是一般L4Z压缩的单个AssetBundle加载都在1-2帧内完成,个人觉得不应该影响很大。

    用Profiler追踪数据,发现造成较长时间卡顿的帧,Unload调用次数很多只有1-2次,并且处于加载中的头部资源也不多。单个头部资源可能引用较多依赖资源包。

    不知道有没有处理过类似问题的朋友,可以给一些检查方向上的建议。

    A:经查,是AssetBundleLoadRequest太多把PersistentManager锁住了。给加载和卸载分配单独的帧就好了。

    感谢题主欧月松@UWA问答社区提供了回答

    封面图来源于网络


    今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

    UWA官网:www.uwa4d.com
    UWA社区:community.uwa4d.com

     

  • 相关阅读:
    Redis面试问题三什么是缓存雪崩怎么解决
    什么是机器学习特征工程?【数据集特征抽取(字典,文本TF-Idf)、特征预处理(标准化,归一化)、特征降维(低方差,相关系数,PCA)】
    C# 将图片字符化(转为ASCII字符)
    L3 Hive操作
    《Linux驱动:USB设备驱动》
    数组20—pop() :从数组末尾删除一个元素
    蓝鹏测控测宽仪系列又添一员大将——双目测宽仪
    聊聊logback的FixedWindowRollingPolicy
    如何实现通达信接口开发?
    LeetCode 645. Set Mismatch
  • 原文地址:https://blog.csdn.net/UWA4D/article/details/134240530