Unity中ab包压缩方案 LZMA 和LZ4比较
压缩大小:lzma比lz4小。
压缩时间:lzma会远远高于lz4.
解压缩时间:lzma的解压缩时间比lz4慢。lz4的解压缩时间比较快。
总结:lzma的压缩比大, lz4的解加载速度,解压缩时间比较快。从压缩比和速度来看lz4会更优
MipMap与LOD是何物?
LOD:
全称Level Of Detail,中文翻译“细节级别渐变”,顾名思义,不同的级别展示不同的细节,那么究竟这个技术是如何运用在游戏项目中的呢?通过例子我们来学习一下。关于为什么要使用这个技术,和游戏优化是密不可分的,使用这个技术可以减少需要处理的模型顶点数目,降低GPU性能瓶颈的风险。
原理:当模型离摄像机(可以是人物摄像机或其他摄像机)很远时,然后根据距离的远近使用不同模型级别,远的时候就选择低级别的模型,近的时候选择高细节模型,这样就可以减少模型上面的顶点和面片数量从而提高性能。
MipMap:
mipmap针对的是纹理贴图,大白话就是,一个模型身上会有贴图,当我们对这个贴图使用了MipMap技术之后,那么在游戏运行中这个模型的贴图会根据摄像机距离模型的远近而调整不同的不同质量的贴图显示。
原理:使用了MinMap技术之后会对这个贴图生成几张精度质量不同的贴图,内存占用变大。
所以关于这个技术是否使用,根据你的项目而定,什么都是有利有弊的。
Mipmap技术有点类似于LOD技术,但是不同的是,LOD针对的是模型资源,而Mipmap针对的纹理贴图资源
MipMap可以用于跑酷类游戏,当角色靠近时,贴图清晰显示,否则模糊显示
Animation和Animator 的区别
在Unity中,Animation和Animator都是用于处理动画的系统,但它们在实现和使用上有一些区别。以下是对它们的区别的系统总结:
Animation(动画系统):
基于关键帧的动画系统:Animation系统使用关键帧来定义动画,你需要手动设置和编辑关键帧的属性值。
针对游戏对象:每个Animation组件附加到一个特定的游戏对象上,用于控制该对象的动画。
需要预先创建动画剪辑:在Animation系统中,你需要在编辑器中创建动画剪辑,每个剪辑代表一个动画状态,然后通过脚本来控制播放这些剪辑。
相对较简单:Animation系统相对简单易用,适用于一些简单的动画需求。
Animator(动画控制器系统):
基于状态机的动画系统:Animator系统使用状态机来定义和控制动画,你需要创建状态机和转换规则来定义动画之间的切换。
针对游戏对象的组件:Animator组件附加到游戏对象上,用于控制该对象及其子对象的动画。
使用Animator Controller控制动画:你需要创建Animator Controller,它包含了状态机和动画状态的定义,然后将Animator组件与Animator Controller关联起来。
支持过渡和条件:Animator系统支持状态之间的过渡,可以通过条件来触发状态之间的切换。
动态调节参数:你可以在运行时通过脚本调节Animator Controller中定义的参数,实现动画的控制和过渡调整。
更灵活和高级:Animator系统提供了更多灵活和高级的功能,适用于复杂的动画需求和交互逻辑。
总结:
Animation系统是基于关键帧的简单动画系统,适用于简单的动画需求,而Animator系统是基于状态机的更复杂和灵活的动画控制系统,适用于复杂的动画需求和交互逻辑。在选择使用哪个系统时,可以根据实际需求和项目的复杂程度进行评估和选择。
需要注意的是,Animation和Animator可以结合使用,根据项目的需求和情况来选择合适的动画处理方式。
携程
在Unity中,协程(Coroutine)是一种特殊的函数类型,用于实现异步操作和协作式多任务处理。它是Unity提供的一种编程工具,用于简化异步编程和时间控制。
协程本质上是一种可以暂停和继续执行的函数,它可以在特定的时间点暂停执行,然后在稍后的时间点恢复执行,而不会阻塞整个程序或线程。这种特性使得协程非常适合处理需要延迟、异步或分阶段执行的任务。
以下是协程的一些特点和用途:
异步编程:协程提供了一种简单且直观的方式来实现异步操作。通过在协程中使用yield return语句,可以将任务划分为多个步骤,并在每个步骤之间进行等待和处理。
时间控制:协程可以用于处理时间相关的操作,例如延迟执行、定时器、动画序列等。通过在协程中使用yield return new WaitForSeconds()等语句,可以实现在指定时间后继续执行下一步操作。
逻辑流程控制:协程可以用于管理游戏中的复杂逻辑流程,例如游戏关卡的切换、任务的执行顺序等。协程的暂停和恢复机制使得可以更灵活地控制程序的执行流程。
效果和动画控制:协程可以用于创建各种效果和动画的控制。通过在协程中逐帧更新对象的属性或状态,可以实现平滑的动画效果。
协程的本质是通过迭代器(Iterator)和状态机(StateMachine)的组合来实现的。在C#中,协程函数被编译成一个迭代器方法,它会返回一个IEnumerator对象。协程函数中的yield return语句会生成一个yield指令,并将协程的当前状态和需要等待的时间等信息保存在IEnumerator对象中。通过迭代器的迭代操作,协程函数可以在需要等待的时间点暂停执行,并在下一次迭代时继续执行。
Unity提供了内置的协程管理器(Coroutine Manager),它负责协程的调度和执行。你可以使用StartCoroutine函数启动一个协程,使用StopCoroutine函数停止一个协程,并使用yield语句控制协程的执行流程。
总之,协程是Unity中一种方便且强大的工具,用于实现异步编程、时间控制和逻辑流程控制。它的本质是基于迭代器和状态机的特殊函数类型,可以将任务分解