unity基础
J-SL
随便写写的小白
展开
-
Sorting Layer与Order in Layer
就像是两个数相比,比如34与26,Sorting Layer决定的是十位,而Order in Layer决定的是个位,如果Sorting Layer的级别比较高,则可以忽略Order in Layer的比较,当比较的二者的Sorting Layer级别相同,则Order in Layer才起决定作用。原创 2023-08-03 17:30:36 · 303 阅读 · 0 评论 -
图片资源
From Gray Scalable:根据RGB均值计算得来的Alpha值。根据不同距离显示不同分辨率的图片,耗费内存,跟3D的LOD功能类似。Input Texture Alpha:自带的Alpha资源。ToNearest:处理图片成为大小最接近2的次方数图片尺寸。ToLarger:图片分辨率按最大尺寸来。Editor GUI:编辑器使用的图片。Cookie:灯光Cookie贴图。Lightmap:灯光贴图。Normal:法向贴图。Cursor:鼠标贴图。None:不对图片处理。原创 2023-08-03 12:31:26 · 126 阅读 · 0 评论 -
Unity特殊文件夹
原创 2023-08-02 12:29:56 · 187 阅读 · 0 评论 -
yield
等待固定的时间(一般为0.02秒)运行到当前帧最后执行。原创 2023-08-02 10:47:58 · 71 阅读 · 0 评论 -
延迟函数
发现按下A键使物体失活,延迟函数Invoke仍会执行,但当前脚本或者脚本的游戏物体被销毁时,Invoke不会执行。repeatRate表示重复执行methodName的时间间隔。InvokeRepeating:重复调用Invoke。无参情况下是取消当前代码内所有Invoke函数。time表示多少秒后执行methodName。原创 2023-08-01 11:09:55 · 223 阅读 · 0 评论 -
Ray
碰撞到的物体的Transform组件。} 碰撞体与射线起始点的距离。} 碰撞点所在碰撞的法向量。} 碰撞点世界坐标系下的坐标。} 碰撞到的物体的刚体。这里的最后一个参数可以设置层级(int型),方法类似于我这一篇讲的Culling Mask。物理射线监测:返回值为bool型,可以确定射线有无碰撞到碰撞体。可知:normal为碰撞到的点所在的面的法向量。原创 2023-07-30 16:21:02 · 246 阅读 · 0 评论 -
AddForce
VelocityChange:关注的是速度,与质量无关。Acceleration:关注的是加速度,与质量无关。Impulse:关注的是冲量,与质量相关。Force:关注的是力整体。原创 2023-07-29 19:40:16 · 344 阅读 · 0 评论 -
Camera组件
当给摄像机Target Texture赋值Render Texture时,这个摄像机的Depth会失效,不会和其它摄像机进行对比渲染到主屏幕,而是将当前摄像机拍摄到的画面显示实时到Render Texture上。Clipping Planes/Near,Far:渲染最近/最远的距离,所需渲染的游戏物体需在这个范围内。摄像机先后渲染的级别,可用于多个摄像机叠加(值越大越后渲染,后渲染的画面覆盖先渲染的画面,显示的越靠前):与上期介绍的Light组件中的Culling Mask的效果类似。原创 2023-07-29 12:11:19 · 258 阅读 · 0 评论 -
Audio Clip
预加载音频资源,如果勾选进入场景就会马上加载,如果不勾选,第一次使用音频时才会加载(进内存)。第一个,以不压缩的形式存在内存,用的时候方便,但是占用的内存高。Vorbis:相对来说压缩的很小,可以调整压缩质量。第三个,以流的的形式存在内存,使用时现解码。ADPCM:脚步声/武器碰撞声等等可以用。多声道强制转为单声道,减小所占内存。aiff/wav:适用于较短声音片段。mp3/OGG:适用于较长的音乐片段。第二个,以以压缩的形式存在内存。PCM:以最高质量进行存储。勾选后会对声音有优化。原创 2023-07-26 17:23:31 · 220 阅读 · 0 评论 -
四元数
与transform.LookAt类似的是都是将其正方向指向目标方向,但是LookRotation可以做的跟更好。值得注意的是:Unity中组件Transform的Rotation实际上是Quaternion类型的。线性插值,与Mathf.Lerp差不多。值得注意的是:两个四元数相乘。原创 2023-07-25 20:35:00 · 263 阅读 · 0 评论 -
万向节死锁
要理解万向节死锁的产生原因,首先要理解欧拉角变换,欧拉角变换是基于。为了解决这个问题,四元数就是个很好的方法,下期我将介绍一下四元数。果然,转动Y轴时,视觉看上去却是围绕X轴进行旋转。的坐标进行变换而非变换后的坐标进行变换。在Unity中,变换顺序为Y>Z>X。所以先对Y轴变换,就不会影响Z和X轴。发现物体却是绕Y轴进行旋转,看上去仍是绕Z轴旋转。原创 2023-07-25 18:43:22 · 2275 阅读 · 0 评论 -
Vector3.Cross
上期介绍了Vector.Dot可以用来判断敌人处于自身的前方or后方,那么这期就是通过叉乘来判断敌人处于自身的左方or右方。可以看到,敌人位于自身右边时(x轴正方向)根据右手定则,叉乘的结果方向向上。根据这个特性,我们可以根据叉乘结果的正负来判断敌人位于自身的左边or右边。将球移动至自身右边时。原创 2023-07-25 13:13:20 · 676 阅读 · 0 评论 -
Vector3.Dot
a.transform.position这两个向量,当cube(2)在自身(cube)的前方时,其夹角永远小于90°,在后方时,永远大于90°,如此可依据点乘来判断“敌人”相对于自身的位置(前方or后方)这里我将两个向量传入,第一个为cube本身的正方向,第二个为cube指向cube(2)的方向,由于向量点乘等于其各自模长相乘再乘上二者之间的余弦值,所以Vector3.Dot返回值的正负取决于其夹角。如图:cube在cube(2)的前方、原创 2023-07-25 10:15:45 · 395 阅读 · 0 评论 -
摄像机跟随
transform.forward向量的两个端点其中一个在世界坐标原点,与另一个点的连线与物体自身正方向朝向平行,用这个向量乘一个长度,再与(0,height,0)相加,就可得到想要的目标向量,这个向量n(x,y,z)与物体自身位置相加Target.transform.position(假设为(x1,y1,z1)),则(x+x1,y+y1,z+z1)的向量的端点就是所需的位置。原创 2023-07-24 17:02:23 · 92 阅读 · 0 评论 -
Mathf.Lerp
其中a,b代表起点和终点的位置,而t表示一个百分数,即插值在a,b之间的位置所占a,b总长的百分比,若t>1,则按1计算。这样可以实现“远快近慢”的效果,理论上a将无限趋近于b但不等于b,可以应用在血条制作,摄像机跟随等方面。第二次:a=position1,position2=(b-a)*t。第三次:a=position2,position3=(b-a)*t。第一次插值位置:position1=(b-a)*t。Lerp函数有三个参数,a,b,t。原创 2023-07-23 14:06:35 · 360 阅读 · 0 评论 -
ONGUI
说明是以左上角为原点来算的。原创 2023-07-23 12:10:27 · 219 阅读 · 0 评论 -
Instantiate
在unity中把预制体赋给hitEffectParticle就行了。要产生一个特效,可以使用Instantiate。原创 2023-05-01 10:25:20 · 151 阅读 · 0 评论 -
Light组件
为3时,设置第二个和第三个同时勾选,也就是Default和TransparentFX(0011)为0时,设置cullingMask勾选第一个,也就是noting,其余不勾选(0000)为1时,设置Default勾选(跳过Everything)(0001)为2时,设置第二个勾选,也就是TransparentFX(0010)这样的好处是可以简便的同时选择多个需选择的层级。可选择图片,光源会以这个图片的样式投影。Direction:直射光(模拟太阳)Area:区域光(渲染用,需烘培)RealTime:实时。原创 2023-07-22 18:54:18 · 131 阅读 · 0 评论 -
生命周期函数
通过设置空物体是否禁用可以得知,当脚本(或挂载脚本的物体)被禁用/启用时,OnDisable和OnEnable会被调用。经测试:物体在被销毁时,先调用OnDisable,再调用OnDestroy。Update是每帧执行一次,而FixedUpdate是以固定时间执行一次。LateUpdate是在Update执行后执行 ,同样是每一帧都会执行。可以看到FixedUpdate是每0.02s执行一次。加入OnDisable函数。原创 2023-07-22 12:40:41 · 64 阅读 · 0 评论 -
递归查找子物体(适用于背包系统)
【代码】递归查找子物体(适用于背包系统)原创 2023-07-22 11:21:36 · 72 阅读 · 0 评论 -
Input类
这样可以通过检测a d键的输入,从而返回一个在-1至1间的浮点值,可以让移动不会显得突兀。同上道理,其中int button代表左键(0),右键(1),中键(2)可以再unity中的Project Settings找到。同上,但只会返回0,-1,1这三个值。按下键后松开按键时调用。原创 2023-07-21 14:34:02 · 53 阅读 · 0 评论 -
transform.Rotate/Translate/LookAt/SetParent/GetChild/Find和GameObject.Find
查找父物体transform下的子物体,如transform.GetChild(0);为查找transform下的第一个子物体,值得注意的是,GetChild不能查找子物体的子物体。与GetChild类似,根据物体名字进行精确查找,要确保名字不能出错,同样只能查找transform的子物体,而不能查找子物体的子物体。传入欧拉角,旋转相应的度数,默认是自身坐标系(Space.Self)可以更改为世界坐标系(Space.World)游戏物体指向(默认:Vector3.up)另一个游戏物体(target)原创 2023-07-21 12:56:33 · 80 阅读 · 0 评论 -
unity预制体打包
unity做好的预制体如果给别的工程使用,如果是单纯的ctrlcv会导致丢失引用,如材质信息等,我们可以将其打包好再导入给别的工程。点击Export,选择保存位置。原创 2023-07-20 16:53:58 · 359 阅读 · 0 评论 -
unity基础
调整摄像机位置至Sence视角:CTRL+shift+f。旋转视角:ALT+左键。原创 2023-07-20 16:48:12 · 49 阅读 · 0 评论 -
unity对象池系统
当游戏场景中出现大量的可重复利用的物体时,通过Destory来销毁再创建会触发不必要的GC回收机制,浪费性能,我们可以利用unity自带的对象池系统,从而节约性能来得到同样的效果。限制对象池的最大容量,防止对象池的无限扩张,如果maxSize已满,当调用Release函数时,这个Release函数将会忽略。为了实现对象池,必须修改一下子弹的脚本,让子弹停留2秒后回收入对象池而非摧毁。对象池的默认容量,和链表或队列类似,当容量不足时会自动扩容。回收对象到对象池时要执行的功能。调出对象池对象时要执行的功能。原创 2023-07-15 12:24:09 · 662 阅读 · 0 评论 -
unity物理系统
Speculative CCD会根据上一帧的数据来预测并扩大物体的矩形包围盒,在上图中引擎通过扩大包围盒来找到了n1和n2两个碰撞点的法线。于是引擎重新规划了小球即将到达的位置(t2)。但是DCD有一个很大的问题就是快速移动会穿过其它物体,从而逃过碰撞检测,因为我们始终以固定时间步长来更新物理,所以有可能两个物体在前后两帧之间穿过了彼此,但物理引擎并不知情。物理引擎即描述真实世界中物理现象的算法,如刚体物理,软体物理和流体物理,unity本身支持的主要为刚体物理,我们也可以自己编写一些其它的模拟效果。原创 2023-07-08 12:11:19 · 617 阅读 · 0 评论 -
Unity协程
刚刚我们说到他们的使用是有一定的规则的,那么规则是什么呢,答案是前两种结束协程方法的使用上,如果我们是使用StartCoroutine(string methodName)来开启一个协程的,那么结束协程就只能使用StopCoroutine(string methodName)和StopCoroutine(Coroutine routine)来结束协程。关键字时,系统会自动生成一个继承自IEnumerable的类,并在该类中实现我们所写的逻辑(如MoveNext()等)。原创 2023-07-03 13:35:47 · 357 阅读 · 0 评论