Unity报错汇总

Posted 艺菲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity报错汇总相关的知识,希望对你有一定的参考价值。

1、ParticleEmitter报错,改用ParticleSystem。

2、Unable to resolve reference 'UnityEngine.Timeline'. Is the assembly missing or incompatible with the current platform?

Package Manager安装TimeLine

3、NavMesh Modifier所在的物体,一定要放在NavMeshSurface下作为它的子物体,位置一定要

高于它的父物体,否则无法生成NavMesh。Ignore From Build如果勾选则不生成NavMesh。

4、

unity 打包 Could not download httpcore-4.4.10.jar

D:\\Program Files\\Unity\\2020.3.40f1c1\\Editor\\Data\\PlaybackEngines\\androidPlayer\\Tools\\GradleTemplates

baseProjectTemplate.gradle文件中修改、

allprojects
    buildscript
        repositories **ARTIFACTORYREPOSITORY**
            maven url 'http://maven.aliyun.com/nexus/content/groups/public/'
            maven url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
            google()
            jcenter()
       

        dependencies
            // If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity
            // See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html
            // See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
            // To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle version
            classpath 'com.android.tools.build:gradle:4.0.1'
            **BUILD_SCRIPT_DEPS**
       
   

    repositories **ARTIFACTORYREPOSITORY**
        maven url 'http://maven.aliyun.com/nexus/content/groups/public/'
        maven url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
        google()
        jcenter()
        flatDir
            dirs "$project(':unityLibrary').projectDir/libs"
       

参考 http://t.csdn.cn/mew6whttp://t.csdn.cn/mew6w多重试打包几次也是可以的。

5. 子对象碰撞,

Collision collision获得的是父类带有Rigidbody的对象

 003为实际发生碰撞的物体

OnTriggerEnter是带有BoxCollider的物体

6.        模型在unity发布到头盔中闪烁的问题

先调整Quality,将Andoird默认的质量调高,但是面会出现闪烁的情况。

这时我们需要调整相机的Near为1

面闪烁主要是因为模型的面重叠导致。

Unity 之 UPR优化建议汇总

Unity UPR优化建议汇总

打开UPR的测试报告,左侧菜单栏选择测试概况,可以看到报告解读

平均帧率。

推荐值 > 25 帧
UPR优化建议

  1. 查看CPU占用Top函数,从高到低开始依次分析和优化。
  2. 查看GC占用Top函数,GC是大部分卡顿的主要原因。
  3. 查看脚本所造成的性能损耗。
  4. 降低游戏的渲染分辨率,手机帧率低的时候,减少每一帧要处理的像素数量。

ReservedMono峰值(MB)

项目运行时Mono管理和分配的托管堆内存。

推荐值 < 80 MB

UPR优化建议
Unity项目中的内存占用主要由静态资源、AssetBundle 和Mono堆内存组成。

  1. 使用UPR资源检测工具检测项目资源。查看资源的内存占用是否合理,并且是否存在资源冗余的问题。
  2. 查看Mono堆内存使用的合理性:ReservedMono峰值是否超过了UPR推荐值,ReservedMono是否存在持续上升的趋势。
  3. Mono堆内存占用量的主要来自于配置文件的读取和解析操作,查看配置文件读取操作的堆内存使用的合理性。
  4. 查看AssetBundle在内存中的驻留情况。

纹理资源的峰值。

推荐值 < 50 MB
UPR优化建议
决定纹理资源大小的因素主要有三种:分辨率、格式和Mipmap是否开启。

  1. 降低分辨率,根据Game摄像机距离物体最近时,物体所占的像素大小来确定最大分辨率。
  2. 拆分透明通道(Alpha), 因为带Alpha通道的贴图 Unity会默认选择RGBA格式。
  3. 调整压缩格式,尽量选用当前平台支持的最高压缩格式。
  4. 禁用Mipmap。
  5. 启用Use Crunch Compression,Crunch是Unity支持的最新压缩格式,压缩比非常高。

推荐使用UPR资源检测工具检测项目资源。

网格资源的峰值。

推荐值 < 20 MB
UPR优化建议

  1. 减少顶点,在可以实现美术效果的前提下,顶点越少越好。
  2. 开启Optimize Mesh选项。
    推荐使用UPR资源检测工具检测项目资源。

动画资源的峰值。

推荐值 < 15 MB
UPR优化建议

  1. 减小动画长度。
  2. 减少骨骼数量,删除无效的骨骼点。
  3. 减少关键帧密度,并减少导入的冗余关键帧。
  4. 减少动画精度,降低动画大小。
    推荐使用UPR资源检测工具检测项目资源。

Draw Call峰值。

Windows端的Draw Call值可能会偏高,请以手机端的值为准。

推荐值 < 250(次)
UPR优化建议

使用WinUpr进行测试,并记录RenderDoc,配合RenderDoc图形调试器,进行图形性能调优。

  1. UI DrawCall数量建议控制在15-40之间,UI DrawCall过多或过少,都会增大性能的消耗。
  2. 查看渲染对象的DrawCall合批是否正确。

Tris峰值(面)

推荐值 < 200000(面)

UPR优化建议

  1. 查看其渲染网格数量的合理性。
  2. 加大对Game Object的裁剪力度。
  3. 简化场景网格。

区间详情 – 性能概况 – CPU细节:

Camera Render平均耗时

推荐值 不超过15ms的帧占比 > 95%

UPR优化建议

在"CPU > 函数性能"页面中,查看Camera.Render的性能详情,有助于快速定位渲染模块的性能瓶颈。

Shader CreateGPUProgram 平均耗时

推荐值 < 20(ms)

UPR优化建议

推荐使用UPR资源检测工具检测项目资源。
查看Shader是否存在资源冗余的问题,应避免重复解析的问题出现。


区间详情 – 性能概况 – 内存细节:

ReservedUnity峰值

为Unity引擎自身逻辑所需要使用的内存分配,包括各模块管理类的内存占用,序列化信息、WebStream、资源的内存占用等等。

推荐值 < 150(MB)

UPR优化建议

  1. 排查是否存在AssetBundle没有被清理干净的情况。
  2. Assetbundle打包的时候,如果只有一个引用的就不设置AssetbundleName。减少Assetbundle文件数量。
  3. 使用SerializedFile加载Assetbundle完之后,即时Unload。
  4. 对于占用WebStream较大的AssetBundle文件,使用LoadFromCacheOrDownLoad或CreateFromFile来进行替换,即将解压后的AssetBundle数据存储于本地Cache中进行使用。
  5. 分析纹理、网络、动画、音频和材质等资源的内存占用性能瓶颈,针对性地进行优化。

ReservedMono峰值

项目运行时Mono管理和分配的托管堆内存。 对于绝大多数基于Unity引擎开发的项目而言,除iOS平台外,其托管堆内存是由Mono分配和管理的。

推荐值 < 80(MB)

UPR优化建议

  1. 排查是否存在AssetBundle没有被清理干净的情况。
  2. Assetbundle打包的时候,如果只有一个引用的就不设置AssetbundleName。减少Assetbundle文件数量。
  3. 使用SerializedFile加载Assetbundle完之后,即时Unload。
  4. 对于占用WebStream较大的AssetBundle文件,使用LoadFromCacheOrDownLoad或CreateFromFile来进行替换,即将解压后的AssetBundle数据存储于本地Cache中进行使用。
  5. 分析纹理、网络、动画、音频和材质等资源的内存占用性能瓶颈,针对性地进行优化。

TexturesSize峰值

项目中纹理资源的峰值。

推荐值 < 50(MB)

UPR优化建议

推荐使用UPR资源检测工具检测项目资源。

决定纹理资源大小的因素主要有三种:分辨率、格式和Mipmap是否开启。

  1. 降低分辨率,根据Game摄像机距离物体最近时,物体所占的像素大小来确定最大分辨率。
  2. 拆分透明通道(Alpha), 因为带Alpha通道的贴图 Unity会默认选择RGBA格式。
  3. 调整压缩格式,尽量选用当前平台支持的最高压缩格式。
  4. 禁用Mipmap。
  5. 启用Use Crunch Compression,Crunch是Unity支持的最新压缩格式,压缩比非常高。

AnimationClipsSize峰值

项目运行中AnimationClipsSize的峰值。

推荐值 < 20(MB)

UPR优化建议

推荐使用UPR资源检测工具检测项目资源。

  1. 减小动画长度。
  2. 减少骨骼数量,删除无效的骨骼点。
  3. 减少关键帧密度,并减少导入的冗余关键帧。
  4. 减少动画精度,降低动画大小。

MaterialCount峰值

项目运行中Material数量峰值。

推荐值 < 300(个)

UPR优化建议

推荐使用UPR资源检测工具检测项目资源。
1.Material数量过多会导致渲染开销的增加。
2.对于Instance类型的冗余Material资源,使用MaterialPropertyBlock来替换Material属性操作,可以省去实体对象本身的开销。
3.对于非Instance类型的冗余Material,查看AssetBundle中是否存在冗余的资源。

SkinnedMesh均值

推荐值 < 50(个)

UPR优化建议

推荐使用UPR资源检测工具检测项目资源。

  1. 减少SkinnedMeshRenderer组件的数量。如果游戏中该模型并不会使用骨骼动画,可以将SkinnedMeshRenderer组件替换为MeshRenderer。
  2. 在导入模型时,可以选择不导入动画。
  3. 减少使用SkinnedMeshRenderer的对象的Mesh顶点数。
  4. 使用GPU Skinning。在硬件平台支持并且GPU资源足够的条件下,可以在Player Setting中启用GPU Skinning,将蒙皮任务从CPU转移到GPU。

以上是关于Unity报错汇总的主要内容,如果未能解决你的问题,请参考以下文章

学习unity3D需要多久

VR开发Unity开发VR时的基本设置

Unity 工具 之 常用插件分类汇总(UI/VR/AR/建模/Shader/动画/网络/AI/资源/数据/区块链等)

优就业的游戏开发一共有几个阶段,时长是多久呢?

Unity编程专业图解

Unity:如何将 VR Cardboard 游戏嵌入网站