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 Space ...
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:以流的形式存在内存,使用时现 ...
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 命令为游戏对象添加刚体组件。
刚体选项参数游戏对象一旦被赋予刚体属性后,其 Insp ...
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就得写代码了。 ...
PlayMaker
PlayMaker简介
PlayMaker是由第三方软件开发商Hutong Games开发完成。它的Logo是一个中文的“玩”字(PS:看来中国文化声名远播)。
它既是一个可视化脚本工具,又是一个分层逻辑框架。
设计师、程序员使用PlayMaker能够很快的完成游戏原型动作,既适合独立开发者,又特别适合团队合作。
在线网站
Unity Asset Store 商店资源
https://assetstore.unity.com/packages/tools/visual-scripting/playmaker-368
PlayMaker优点
1.很多动作行为(例如:跑,跳,攻击等)只需要通过简单状态机FSM(Finite state machine)就能实现,根本不用写一句代码;
2.方便简洁的图表管理每个状态机;
3.播放游戏,可以实时错误检查;
4.集成的帮助,可以让我们快速查看行为说明;
5.设置断点和单步执行状态
6.可以编写自定义行为,让在出现在我们的行为列表(这就要求有点语言基础了)
7.支持各类插件配合使用,加速开发进程(例如Ngui, 2D Toolkit, A* P ...
DoTween
DOTween简介
DOTween是一个免费的Unity3D动画插件,少量编码即可以实现常见的动画效果
DOTween和iTween
iTween的性能没有DOTween好,因为iTween每个动画使用一个Update维护
安装
Window->AssetStore下载
导入Package
菜单栏->Tools->DOTween Utility Panel->Setup按钮
更新
删除Resources/DOTweenSettings文件
删除老的DOTween安装目录Demigiant
重新导入Package,再走安装流程
在线手册
http://dotween.demigiant.com/documentation.php
https://shenjun4unity.github.io/unityhtml/%E7%AC%AC9%E7%AB%A0%20DOTween/9.2%20%E6%96%87%E6%A1%A3.html
命名空间1using DG.Tweening
常用方法123456DoFade()//淡入或淡出DoLocalMov ...