Unity基础
文章平均质量分 54
Unity基础
Go_Accepted
这个作者很懒,什么都没留下…
展开
-
物理系统——射线检测
如果想要鼠标选择场景上的一物体,或者FPS游戏中无弹道,不产生实际的子弹对象进行移动的情况下,需要判断一条线和物体的碰撞情况,即通过。还有一种重载不用传入射线,直接传入起点和方向,也可以用于判断,就是把第一个参数射线变成了射线的两个参数,即起点和方向。例如在这里,碰撞到的点可以帮助我们在FPS中确定子弹孔的贴图位置,而法线可以帮助确定贴图的旋转方向。同样的,也可以不用传射线,传射线的起点和方向也可。同样的,也可以不用传射线,传射线的起点和方向也可。的),如果没有结果是容量为0的数组,而。原创 2022-10-16 17:43:51 · 1225 阅读 · 0 评论 -
物理系统——范围检测
碰撞检测主要用于实体物体之间差生物理效果时使用。原创 2022-10-16 13:08:21 · 609 阅读 · 0 评论 -
LineRenderer——画线功能
线段的点坐标(一般是世界坐标系,通过Use World Space调整),通过增加点的数量与代码控制可以画圆 &LineRenderer是Unity提供的一个用于画线的组件,使用它可以在场景中绘制线段,一般可以用于。在一条线中绘制角时(即线段转弯时)使用了多少额外的点,增加此值,可以使线角看起来更平滑。线段宽度调整(并非点与点的宽度调整,而是从开始到结尾)Reflection Probes:反射探测器模式。Cast Shodows:是否开启阴影。Light Probes:光探测器模式。原创 2022-10-15 22:38:04 · 2039 阅读 · 0 评论 -
场景异步加载
然而在同步切换中,Unity会删除当前场景上的所有对象,并且去加载下一个场景的相关信息,如果当前场景或者下一个场景对象、资源过多,这个过程可能会造成卡顿。让场景加载的脚本依附的对象过场景时不被移除,即通过API:DontDestroyOnLoad(gameObject);是利用场景异步加载的进度去更新,但不是特别准确,一半不会直接用。协程的好处时可以在加载的同时处理一些别的逻辑,比如更新进度。场景异步加载和资源异步加载几乎一致,有两种方法。第二种是根据游戏的规则自己定义进度条变化的条件。原创 2022-10-15 21:38:10 · 593 阅读 · 0 评论 -
Resources资源卸载
Resources在加载一次资源过后,该资源就一直存放在内存中作为缓存,第二次加载时发现缓存中存在该资源,会直接取出来进行使用,所以多次重复加载不会浪费内存,但是会浪费性能(每次加载都会去查找取出,始终伴随着一些性能消耗)注意:该方法不能释放GameObject对象,因为它会用于实例化对象(即使没有实例化也不能卸载),只能用于一些不需要实例化的内容,比如图片、音效、文本等,一般情况下,很少使用这个API。(2)卸载未使用的资源。原创 2022-10-14 23:52:40 · 294 阅读 · 0 评论 -
Resources异步加载
如果加载过多、过大的资源可能会造成程序卡顿,卡顿的原因时从硬盘上把数据读取到内存中,是需要进行计算的,越大的资源耗时越长,就会造成掉帧卡顿。Resources异步加载,就是内部新开一个线程进行资源加载,不会造成主线程卡顿。注意:异步加载不能马上得到加载的资源,至少要等一帧。(1)通过异步加载中的完成事件监听,使用加载的资源。(2)通过协程使用加载的资源。原创 2022-10-14 21:40:05 · 836 阅读 · 0 评论 -
Resources资源同步加载
注意:如果资源同名(例如图片和文本文件同名),那么通过Resources.Load是无法准确加载出想要的内容的,此时可以使用另外的API。通过代码动态加载Resource文件夹下指定路径资源,并避免繁琐的拖曳操作(即在Unity中将资源拖到prefab组件上)支持的格式有:txt,xml,bytes,json,html,csv等。这一步只是加载了数据,但是并没有创建到场景中,因此需要实例化。注意:预设体对象加载需要实例化,其他资源加载一般直接用。第一步:加载预设体的资源文件(加载配置数据到内存中)原创 2022-10-13 23:43:41 · 1047 阅读 · 0 评论 -
特殊文件夹
注意,路径不能通过【Application.dataPath + "/StreamingAssets"】进行拼接,因为打包后在不同平台,streamingAssetPath的路径可能是不一样的,同时dataPath也会失效。需要手动创建,主要是将不同平台的插件相关文件放在其中,比如IOS和Android平台,例如手机游戏中的一些定位的API文件将在Unity中进行调用,这些库放在该文件夹下。需要手动创建,开发Unity编辑器时,编辑器相关脚本放在该文件夹中,该文件夹内容不会被打包出去。原创 2022-10-13 22:53:21 · 657 阅读 · 0 评论 -
协同程序原理
继承MonoBehavior后开启协程,相当于是把一个协程函数(迭代器)放入Unity的协程调度器中帮助我们管理进行执行,具体的 yield return 后面的规则也是Unity定义的一些规则。如果我们不通过开启协程方法执行协程,那么Unity的协程调度器是不会帮助我们管理协程函数的,但是我们可以自己执行迭代器函数内容。协程调度器是Unity内部实现的,会在对应的时机帮助我们继续执行协程函数。Unity只实现了协程调度部分,协程的本体本质上就是一个C#的迭代器方法。原创 2022-09-29 23:52:49 · 287 阅读 · 0 评论 -
Unity协同程序
新开一个协程是在原线程之上开启,进行逻辑分时分步执行。(可以理解为把一个函数分为几部分分时进行)协程函数是不能够直接通过MyCoroutine(1, "123")这样去执行的。协程开启后,组件和物体销毁,协程不执行;物体失活协程不执行,组件失活协程执行。Unity是支持多线程的,只是新开的线程无法访问Unity相关对象的内容。继承MonoBehavior的类,都可以开启协程函数。(即把可能会让主线程卡顿的耗时的逻辑分时分步执行)新开一个线程是独立的一个管道,和主线程并行执行;(1)第一步:声明协程函数。原创 2022-09-29 23:16:11 · 859 阅读 · 0 评论 -
Unity延时函数
延时执行的函数,可以自己设定延时要执行的函数和具体延时的时间,是Monobehaviour基类中实现好的方法。原创 2022-09-29 22:12:13 · 4154 阅读 · 3 评论 -
四元数计算
一定要注意,不能够改变乘法的顺序,必须是四元数乘以一个向量才能返回一个向量,即。四元数乘向量返回一个新向量,原创 2022-09-28 22:46:58 · 1814 阅读 · 0 评论 -
四元数常用方法
举例:当人物面朝向像改变时,只需要把目标面朝向传入该函数,便可以得到目标四元数角度信息,之后将人物四元数角度信息改为得到的信息即可达到转向。单位四元数表示没有旋转量(角位移),当角度为0或者360度时,对于给定轴会得到单位四元数。在四元数中,Lerp和Slerp只有一些细微差别,由于算法不同,Slerp的效果会好一些。LookRotation方法可以将传入的面朝向量,转换为对应的四元数角度信息。【1,(0,0,0)】和【-1,(0,0,0)】都是单位四元数,原创 2022-09-28 21:53:17 · 1279 阅读 · 0 评论 -
四元数是什么
四元数是简单的超复数,由实数加上三个虚数单位组成,主要用于在三维空间中表示旋转。[w,v],w为标量,v为3D向量,展开后为——[w,(x,y,z)]四元数原理包含大量数学相关知识,较为复杂,比如:复数、四维空间等等。(2)不会有万向节死锁,即使在Unity中欧拉角x轴旋转90度。Quaternion:是Unity中表示四元数的结构体。一个四元数包含一个标量和一个3D向量。对于给定旋转,假设为绕着n轴,旋转。四元数Q则表示绕着轴n,旋转。四元数相乘代表旋转四元数。原创 2022-09-26 23:26:35 · 6831 阅读 · 0 评论 -
四元数——为何使用四元数
由三个角度(x,y,z)组成,在特定坐标系下用于描述物体的旋转量,空间中的任意旋转都可以分解秤绕三个互相垂直轴的三个旋转角组成的序列。(2)万向节死锁:当某个特定轴达到某个特殊值时,绕一个轴旋转可能会覆盖住另一个轴的旋转,从而失去一维自由度;由于欧拉角的缺点,而四元数旋转不存在万向节死锁问题,因此计算机中我们往往使用四元数来表示三维空间中的旋转信息。(1)同一旋转的表示不唯一很好理解,比如绕y轴旋转90度和450度效果是一样的,主要说万向节死锁。(3)可以进行从一个方向到另一个方向旋转大于180度的角度。原创 2022-09-26 22:48:32 · 346 阅读 · 0 评论