UI基础知识
UI UI:User Interface 用户界面 UE:User Experience 用户体验 常见的UI类型环抱式 弹框 全屏覆盖 超全屏 3D 常见设备的分辨率常见设备显示比例 4:3:iPad,安卓Pad 16:9:非全面屏的手机,PC的显示器 18:9:全面屏 异形屏:向标准分辨率靠近 配置常见设备分辨率 Unity界面的发展史 Unity 图形用户界面 unity Graphical User Interface Unity4.6版本之后引入的界面显示系统 Unity公司自己研发的一套界面显示系统 Unity的UI系统(OnGUI、NGUI、UGUI)OnGUI OnGUI:最早的UI系统,纯代码实现,写法类似Update 优点:出现很早,纯代码可控制 缺点:只能程序开发 NGUI NGUI:Unity著名插件,可实现2D和3D的界面,出现在老项目 优点:功能完整,集成了动态效果 缺点:性能较弱,交互使用物理引擎实现,需要付费 UGUI:官方制作的UI系统,NGUI作者开发 优点:性能优秀,功能较完整 缺点:功能需要再完善,动画需要配合DOTween ...
导航系统
Unity的寻路系统AStarPathFinding: Navigation:unity自带的寻路系统;比较简单AgentRadius:烘焙路径可行区域和非可行区域的间隔;AgentHeight:烘焙路径时当高度小于这个值的地方,就是不可行区域;Max Slope:最大可行区域的坡度;Step Height:最大台阶高度;Drop Height:下落高度;Jump Distance:最大跳跃距离; 实现从低点到高点的跳跃:从cube3的位置到cube4的位置(如下图): NavMeshAgent 寻路组件:Base offset:组件的竖直方向的偏移量; Speed:速度;Agular Speed:角速度;Acceleration:加速度(加速度是矢量,有大小有方向,在加速时是加速度,减速时是减速的加速度);StoppingDistance:距离目标点多远就停止(速度不能太快,加速度不能太小,否则跟目标点距离等于stoppingdistance时停不下来) Radiu:寻路组件半径;Height:寻路组件高度;Quality:寻路精细度,速度越快对寻路精细度要求越高;Prio...
Unity中UI基础控件
Unity中UI基础控件 Canvas 画布 Rect Transform 矩形变换 Text 文本 Image 图片 Raw Image 原始图片 Button 按钮 # Toggle 开关 Slider 滑动条 Scrollbar 滚动条 Dropdown 下拉框 InputField 输入框 Panel 面板 Scroll View 滑动视图 Canvas 画布 画布,绘制UI元素的载体,所有元素必须在Canvas之下。 UI元素的绘制顺序依赖于Hierarchy (层级面板)中的顺序。 参考https://docs.unity3d.com/cn/current/Manual/class-Canvas.html UI元素渲染顺序 在同一个Canvas下的UI对象会根据在Hierarchy窗口中从上到下的顺序进行渲染 以Hierarchy参考 下方物体在上方物体前显示 子物体在父物体前显示 下方物体永远在前显示,无论上方的层次结构 Render Mode 渲染方式(三种) Screen Space-Overlay 覆盖模式 Screen Sp...
UI的事件交互
- Word M3W1 -
射线
LineRenderer(划线组件)Material:划线的材质;Positions:多个点,划线的点集;Use World Space:是否使用世界坐标系;Loop:是否循环,是指第一个点和最后一个点是否形成闭环;Width:划线的宽度,通过曲线来控制; 一条射线碰撞到多个碰撞体1234567Ray ray1 = new Ray(Vector3.zero, Vector3.forward);//同理一条射线能触碰多个碰撞体,并返回碰撞信息数组﹔如果没有磁撞到碰撞体,数组长度为0RaycastHit[] hitinfos = Physics.RaycastAll(ray1,1000,(1 <<LayerMask.NameToLayer("UI")) + (1 << LayerMask.NameToLayer("Cube")));for (int i = 0; i < hitinfos.Length; i++){ Debug.Log(hitinfos[i].transform.name);...
相机
在线文档https://docs.unity.cn/cn/current/Manual/class-Camera.html Camera component(摄像机组件) 属性: 功能: Clear Flags Skybox 天空盒 Solid Color 填充颜色,当有空白处,填充背景颜色 Depth Only 仅考虑深度;只渲染我需要渲染的层,而且不受其他不渲染层遮挡影响 Don’t Clear 不清除上一帧留下的渲染数据,类似残影效果 Culling Mask 裁剪层;这里面控制当前摄像机会渲染哪些层的游戏物体,是通过二进制的形式去控制的 Projection Perspective 透视摄像机;一般渲染3D场景或者说是3D摄像机,能渲染出z轴值变化效果 Orthographic 正交摄像机,一般渲染2D场景或者2D游戏,游戏物体在z轴运动效果不能显示 Size/Field of view 摄像机渲染范围大小 Clipping Planes:Near/far 渲染最近/最远距离;所需要渲...
声音系统
AudioSourceAudioSource:播放声音的组件,音源Mute:静音Play On Awake:自动播放;Loop:循环;Priority:优先级;Volume:音量大小;Pitch:音调高低; AudioListenerAudioListener:监听声音;一般放摄像机上,相当于是耳朵重要:一个场景内只能有一个这个组件; AudioClipAudioClip:Unity支持的音频格式: .aiff:适用于较短声音片段; .wav: 适用于较短声音片段; .mp3、OGG:适合较长的音乐片段; Force to mono:强制将多声道音频转换成单声道音频,占用大小会缩小;勾选Normalize之后会对声音有优化; Load In Background:在后台加载声音;Load Type:Decompress On Load:以不压缩的形式存在内存,用的时候方便,但是占用内存高; Compress in memory:以压缩的形式存在内存, Streaming:以流的形式存在内存,使用时现解码;Preload Audio Data:预加载音频资源;如果勾...
Unity中的3D数学
函数三角函数123456//角度转换成弧度float x= Mathf.Deg2Rad*180;//弧度转换成角度float y = Mathf.Rad2Deg*3.14f;Debug. Log("x:"+ x+", y:"+y); 三角函数曲线坐标系 Unity所采用的左手坐标系 123456//Vector3.forward 0,0,1定值//transform.forward这个值不固定,本地坐标正方向所在世界坐标系中的方向Vector3 v = cube.transform.forward;Debug. Log("V:" + v);transform. Translate(Vector3.forward,Space. Self);transform. Translate(transform.forward,Space.World); 向量向量的定义向量的加法向量的减法向量的点乘向量的叉乘 - Word M2W2 -
欧拉角万向节死锁(Gimbal Lock)
版权声明(转载)本文总结归纳自知乎的天下行走和CSDN的AndrewFan。 FCND-Gimbal-Demo用于讨论万向节死锁(Gimbal Lock)的Unity3D开源项目 https://zhuanlan.zhihu.com/p/344050856 https://blog.csdn.net/andrewfan/article/details/60981437 https://github.com/udacity/FCND-Gimbal-Demo 前言四元数四元数相对于其他形式的优点,大略为: 解决万向节死锁 仅需4个浮点数,相比矩阵更轻量 无论求逆、串联等操作,相比矩阵更高效 本文简要分析“万向节死锁”形成原因。 欧拉角欧拉角用于表示刚体当前的姿态。思想:将刚体绕某一轴的一次旋转,分解为依次分别绕X、Y、Z轴的三次旋转。这三个轴分别旋转的转动角度,就是一组三个欧拉角。图片中即为上述的三次旋转(而其实可以绕某一轴,一次旋转即可达到最终位置) 具体旋转过程举例,如图: 图中有两组坐标系,我们定义为: x、y、z:世界坐标系(固定不动) X、Y、Z:刚体坐标系...
欧拉角与四元数(eulerAngles and Quaternion)
关键词欧拉角(eulerAngles) 使用三个数字来保存方位(描述物体的朝向),使用Vector3存储但并不代表向量;代表一系列的三维基本旋转,也就是围绕一个坐标系的每个轴的一系列旋转。 仅使用三个数字表达方位,占用空间小。 Unity在线文档 https://docs.unity.cn/cn/current/ScriptReference/Transform-eulerAngles.html 优缺点 优点:三个角度(沿坐标轴旋转的单位)组成,直观,容易理解。 优点:可以进行从一个方向到另一个方向旋转大于180度的角度。 缺点:万向节死锁问题。 缺点:对于一个方位,存在多个欧拉角描述,因此无法判断多个欧拉角代表的角位移是否相同。比如(250,0,0)与(290,180,180)为同一个欧拉角,为了保证任意方位都只有独一无二的表示,Unity引擎限制了角度范围,即沿X轴旋转限制在-90到90之间,沿Y与Z轴 旋转限制在0到360之间。 欧拉角分类 静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态 动态:即绕物体坐标系的三个轴的旋转,由于物体...
Rigidbody(刚体组件)
Rigidbody简介Unity 3D 中的 Rigidbody 可以为游戏对象赋予物理特性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的物理学现象。 我们通常把在外力作用下,物体的形状和大小(尺寸)保持不变,而且内部各部分相对位置保持恒定(没有形变)的理想物理模型称为刚体。 刚体(Rigidbody)是物理引擎中最基本的组件。通过该组件可以给物体添加一些常见的物理属性,如质量、摩擦力、碰撞参数等。 Unity 3D 提供了多个实现接口,开发者可以通过更改这些参数来控制物体的各种物理状态。 刚体在各种物理状态影响下运动,刚体的属性包含: Mass(质量) Drag(阻力) Angular Drag(角阻力) Use Gravity(是否使用重力) Is Kinematic(是否受物理影响) Collision Detection(碰撞检测) 刚体添加方法在 Unity 3D 中创建并选择一个游戏对象,执行菜单栏中的 Component → Physics → Rigidbody 命令为游戏对象添加刚体组件。 刚体选项参数游戏对象一旦被赋予刚体属性后,其 I...
FairyGUI
FairyGUI简介 FairyGUI是一款UI制作的编辑器,它是一个跨平台的UI编辑器,支持多个开发平台。开发难度: 在线网站 官网:https://www.fairygui.com/ 在线手册:https://www.fairygui.com/docs/editor Github开源项目:https://github.com/fairygui UGUI、NGUI 和 FairyGUI 对比UGUIUGUI有锚点系统,不可否认,锚点非常优秀,也能实现各种布局,但是有一个问题是锚点只能相对父物体,这也就意味着要实现某种布局时,可能要加入很多空的UI元素来形成一层一层的父物体以使锚点发挥作用。这对UI制作来说很不友好,不仅要考虑相互关系,还要考虑怎么排布父子关系。 FairyGUIFairyGUI提供了一个关联系统,可以关联任意两个元素,使一个元素的位置相对另一个元素去定义,不用考虑层级关系,这一点我认为是非常好的。从UI组件来说,FairyGUI提供的组件要丰富得多,常见的功能都可以在FairyGUI中用鼠标点点点来完成,UGUI组件比较基础,一个可切换的Button就得写代...





