目录
视图
- 默认视图为左手系 (y轴向上 x轴向右 z轴向里)
- 默认约定坐标栅格的一格边为1米(仅仅是个约定)
视图操作
- 旋转视图
鼠标: ALT + 左键滑动
触摸板:ALT + 选中滑动 - 缩放视图
鼠标:滚轮
触摸板:双指滑动 - 平移视图
鼠标:鼠标中键滑动
触摸板:变成小手图标后选中滑动
视野中心
- 如果想调整视野将某一个物体放到视野中心
- 在场景窗口选中物体后,按F键
- 直接双击层级窗口中的物体 - 添加物体时出生点为视野中心,并不是原点
透视和正交
- 透视persp:就是近大远小
- 正交Iso:远近一样大
- 作用:想将物体摆齐排列时
场景右上角默认为透视 点击就可以切换为正交(有点像跳一跳的感觉)
透视广角
当物体在视野边缘时就会发生畸变
想要解决的话需要调整摄像机广角,设置成35就基本没有畸变情况了
物体
- 一般原生模型应用与练习,真正的模型应在建模软件中制作
CG建模软件:3Dmax、Maya、Blender(主流?)、Cinema4D、ZBrush。。。 - 平面有长款,没有高度
- 平面正面有渲染效果,背面看是透明的,其他物体也是内部是透明的
- 一般要求模型正面与z轴方向一致 z:forward
- 复制物体快捷键:选中物体后Ctrl+D
拖动物体
- 可以只沿某一个轴进行拖动
- 也可以沿某一个平面进行拖动
旋转
- 逆时针为正 顺时针为负
- 按住Ctrl键进行旋转,增量默认是15度
也可以设置默认增量 - 还是直接设值最方便
轴心和中心点
- 轴心默认几何中心的位置
- 轴心点模式Pivot 点击后切换为中心点模式Center
- 旋转,移动和缩放都是依照基准点进行操作的
坐标系
- 局部坐标系Local 点击后切换为世界坐标系Global
Local:本地坐标系,以物体自身为轴
Global:世界坐标系,以世界中心为轴
网格 Mesh
存储了模型的形状数据
- 模型的形状,由若干个下面围合而成,面数越多越精细GPU负担越大
- 模型是中空的
- Mesh中包含了面、定点坐标、面的法向等数据
可以切换查看模式
材质
通过新建添加两个材质,右侧有属性值可以设置
为啥我这界面都这么暗呢,一点也不清新,明明设置的是这个颜色和这个颜色
使用方法就是将材质球拖动到物体上
物体很暗的解决方法找到了Windows-Rendering-Lighting
打开自动光照烘焙
- 物体添加时会有一个默认的材质,没有材质的物体如下图
贴图
是建模师的工作范围
在Unity里也是可以进行贴图的
将贴图图片资源拖动到材质球上
效果就是这样的
外部模型FBX
Unity支持的标准模型格式为FBX
在这个网站随便找了个资源
一个模型包含了材质和网格
而贴图是外部一个独立的PSD文件,这里没有是不是已经贴好了
贴图文件与PSD文件名相同,可放到同一目录或所在目录的Textures目录下,都是约定好可直接找到的
直接拖到场景里就可以用了,还挺Q的
材质替换
FBX中的材质是不可修改的
- 重映射
可以把想要的材质直接拖到物体中如下图位置,并点击Apply
- 使用外部材质
1.在物体如下图属性里选择Legacy,并点击Apply
这个操作会将材质解压缩到Textures目录下称为外部独立文件
2.修改文件下的材质球就可以了
其他使用方法
也可以将FBX下的网格拖到场景里,再将想要的材质放上去
资源文件
- 模型文件Model (*.fbx)
- 图片文件Texture (*.jpg/png/psd/tif)
- 音频文件AudioClip(*.mp3/wav/aiff)
- 脚本文件Script(*.cs)
- 材质文件 Material(*.mat)
- 场景文件Scene(*.unity)
。。。。。。
资源
资源包
- 导出
目录或文件右键-Export Package
就会生成unitypackage文件 - 导入
直接将unitypackage文件拖入到Unity内Project窗口的Assets下就行了
资源商店
Unity-Window-Asset Store
摄像机
如果想将相机视角调整到当前开发视角
选中相机后进行如下操作
其他节点也可以这么操作
快捷键:Ctrl+Shift+f
帧更新
- Time.time 获取游戏时间
- Time.detalTime 获取距上次刷新间隔时间
- Unity不支持固定帧率,但可以设定一个近似帧率
Application.targetFrameRate = 60
就是设定Unity以FPS=60的帧率更新游戏(60帧率≈16.7ms)但并不是严格按照这个帧率更新,会有误差
物体运动
- 相对运动
transform.Translate(dx, dy, dz, space)
dx,dy,dz:各坐标轴的偏移量
space:Space.World 相对于世界坐标系 Space.Self 相对于本地坐标系
- 让物体向着另一个物体运动
GameObject flag = GameObject.Find("红旗"); // 获取目标物体
this.transform.LookAt(flag.transform); // 转向目标
this.transform.Translate(0,0,dz,Space.Self); // 向前运动
物体旋转
transform.rotation
是Quaternion类型,官方不建议使用- 建议使用欧拉角
transform.eulerAngles
transform.localEulerAngles
是Vector3类型 - 也可以使用
transform.Rotate(dx,dy,dz,space)
脚本
消息函数(声明周期)
- Awake 初始化 仅执行一次
节点挂载的脚本被禁用时也会执行Awake - Start 初始化 仅执行一次
- Update 帧更新 每帧调用一次
- OnEnable 每当组件启用时调用
- OnDisable 每当组件禁用时调用
执行顺序
- 脚本的执行顺序是不确定的,可以设定优先级(但没必要也不建议)
Edit-Project Settings-Script Execution Order 右下角‘+’按钮添加想设置的脚本 值越小优先级越高
脚本参数
- 参数必须为public
- 工具提示
[Tooltip(''注解")]
- 参数赋值顺序
- 初始化
- 属性窗口赋值
- Awake()
- Start()
…
运行时调试
当我们在运行状态时改变属性值,运行结束后会还原,保存不了我们改变后的值
怎么办呢?
运行时我们可以暂停下去复制组件信息
结束后直接粘贴组件信息