1、基础知识:
标题栏
菜单栏
工具栏:变换工具、gizmos切换、播放控件、层列表、布局列表
功能窗口

2、资源及资源类型:在project里面能够create的资源。project面板可以对资源进行组织管理,创建资源,搜索资源。

3、模型和角色动画:

角色动画创建过程时:创建角色模型、骨骼设置、蒙皮、烘焙动画。
maya、3dmax创建的模型、动画,用插件输出(fbx、obj)或者软件自己的格式(max、blend),unity自身转换。
maya、3dmax创建的模型、动画,需要把IK/FK动画烘焙为关键帧动画,然后导入到unity中,才能识别。关键帧动画能够节省很多计算资源,因为IK/FK运动学动画是每一帧都会涉及到运动学计算的。

maya、3dmax创建的模型、动画,可以全部导入到unity中,然后分割;或者按照一定的命名规则,先分割再导入到untiy中。

4、材质和着色器:
材质和着色器都是属于资源类型,在project面板中create,或者外部导入,纹理即图片,不能使用unity创建,但是可以通过ps等图形处理软件创建编辑之后,导入到unity中使用。
Mesh Renderer组件:包含材质、着色器、纹理(贴图)的选项和参数设置
可以这样理解:纹理+着色器=材质
2D纹理:一张2D贴图
movie纹理:视频(mov/mpg/mpeg/mp4/avi/asf)通过quick time导入之后,被unity自动转换为ogg theroa格式。即动画纹理,之后可以像普通纹理一样使用。

5、声音文件:
声音资源存放于project面板中,可以通过component中的audio listener和audio source组件进行使用。

6、prefab预设:

prefab预设:就是把设计好的游戏物体存为一个备份,当需要生成多个实例化物体时可以直接拷贝使用,避免了重复造轮子的问题。
重用性和运行实例化:创建预设的instance
实例的继承性:修改预设属性,所有的实例会跟着改变。
实例的重载:单独修改实例,则只会对此实例生效。

7、游戏物体使用组件来丰富功能,组件使用project里面的资源来设置属性。

8、scene视图操作;
透视模式persp、正交模式iso
snap移动,按住ctrl键拖动物体,以一定的增量来移动。
表面移动,ctrl+shift拖动物体,一个物体在另一个物体表面移动。
顶点吸附:v键激活移动物体顶点,选择好之后拖动,可在另一个物体的顶点上移动。

9、灯光和摄像机:
灯光类型:spot(聚光灯)、directional(方向光)、point(点灯光)、area(区域光)

10、unity脚本的使用:
5*Time.deltaTime:每秒5度或者5米,和unity的帧速率无关。deltaTime记录了上一帧执行完成的时间。 1/FPS 这里的FPS是实时变化的。

11、C#脚本:test01.cs test02.cs
test01.cs引用test02.cs变量
需要把变量定义为public static类型,然后可以直接引用 test02.var;test02.cs
可以在test02中定义方法(读写变量的实现),然后在test01中调用test02的方法即可实现
在test02中定义静态方法public static test02 instance;并在Awake中赋值为this,在test01中调用此方法test02.instance.var即可
test01和test02属于同一个GameObject:直接调用getcomponent获取脚本组件
test01和test02不属于同一个GameObject:可以通过定义test02所属GameObject的tag,然后在test01中FindGameObjectWithTag或者直接在test01中Find而不定义tag

12、GameObject的获取:
通过脚本里面定义public的GameObject的变量,然后在Inspector面板中拖动另一个GameObject获取
通过在脚本里面Find函数实现(直接Find或者给GameObject定义tag,然后通过Findtag来获取)

13、脚本使用:
脚本里面的时间控制:
time类
yield WaitForSecond(5);//等待5s钟之后再次返回执行。
脚本里面的随机数产生:random类
脚本物体间通信方式:
GameObject.SendMessage:向自身的脚本中发送消息。参数为函数名和函数的参数
GameObject.BroadcastMessage:向自身及子物体的脚本中发送消息
GameObject.SendMessageUpwards:向自身及父物体的脚本中发送消息
使用delegate委托特性来实现。

用一段代码来理解事件/委托机制的用法:下面的代码是点击中文,显示中文名字,点击英文,显示英文名字:

using UnityEngine;
using System.Collections;

public class TestDelegate : MonoBehaviour
{

//定义一个委托(格式是不是很类很像),用来指向我们某个函数。(c++里面的指针函数)
//param参数是名字
private delegate void DebugString(string param);/// <summary>
/// 输出中文名字
/// </summary>
public void DebugNameOfChina(string str)
{Debug.Log("中文名字:" + str);
}/// <summary>
/// 输出英文名字
/// </summary>
public void DebugNameOfEnglish(string str)
{Debug.Log("English Name:" + str);
}//定义一个委托的变量事件
private DebugString handlerDebugString;void OnGUI()
{if (GUILayout.Button("输出中文名字")){//我想输出中文名字的话就给handlerDebugString  赋值成输出中文名字的这个函数DebugNameOfChinahandlerDebugString = DebugNameOfChina;handlerDebugString("丁小未");}else if (GUILayout.Button("Debug English Name")){//我想输出英文名字的话就给handlerDebugString  赋值成输出中文名字的这个函数DebugNameOfEnglishhandlerDebugString = DebugNameOfEnglish;handlerDebugString("DingXiaowei");}
}

}

14、物理引擎:碰撞器与触发器、射线碰撞检测
collider组件、rigidbody组件。
constant force组件:世界坐标系方向力,局部坐标系方向力,世界坐标系扭矩力,局部坐标系扭矩力
在脚本里面使用rigidbody类,和力有关的,需要放到FixedUpdate里面更新。
能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。
碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。
  当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
  当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
两个物体碰撞,可以不要rigidbody存在,但必须要有collider组件存在。只要勾选了is Trigger,就会进入OnTriggerEnter方法。
如果想实现两个刚体物理的实际碰撞效果时候用OnCollisionEnter,Unity引擎会自动处理刚体碰撞的效果。如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEnter。

发送一条射线:physics.Raycast(),出参为RayCastHit类型变量 hit.collider.gameObject

15、物理引擎:joint关节组件
joint关节组件依赖于rigidbody刚体组件
hinge joint铰链关节:开关门、两个物体弹簧等
fixed joint固定关节:两个物体的脱离效果
spring joint弹簧关节:
character joint角色关节:实际是一个球形关节,常用在人模型关节处,所以称为角色关节
configurable joint配置关节:极高的可配置性,可以配置出以上所有关节的效果

16、mecanim动画系统:
MAYA或3DMAX(角色建模、骨骼设置、蒙皮、动画、烘焙)->导出到unity中->动画分割(如果是一个完整的动画)->
mecanim系统专门为人类模型资源提供了一套avatar系统。
avatar的创建过程:分析导入角色资源骨骼结构,与mecanim提供的标准骨骼结构对比,最后转换或标志位mecanim可以识别的骨骼结构。通过avatar的创建,可以实现角色之间的retargeting(角色资源的重用)
在角色资源的输入配置中,Rig的Animation Type选择Humanoid,选择Apply之后自动生成Avatar,之后可以通过configure avatar手动调整。
可以调整关节的mapping映射、调整muscles的运动范围
body mask身体遮罩:在输入配置的animation中,有mask选项,目的是让身体的某部分运动失效。这样减少动画曲线的数量,减少计算量,优化CPU和内存的性能。
retargeting:只要角色创建了avatar,不同角色之间的animator controller就可以重用,这就是retargeting的原理。在animator组件中进行设置。
动画片段设置:有些动画效果只播放一遍,有些需要循环播放。在角色输入的animations中设置。
root motion:角色的移动重心,勾选上就运用到scene的实例中,角色就可以运动,否则角色没有重心指向,不能运动。通过root motion就可以使用角色动画驱动角色运动。
root motion的脚本控制:如果不勾选,又想让角色运动,则需要用脚本控制,一是在角色片段中创建curve曲线,二是在animator状态机中添加变量,三是创建脚本,重写方法OnAnimatorMove。
blendtree:几个类似的动画片段复合为一个动画片段,在动画状态机里面创建。比如(左走,直走,右走动画片段可以融合为一个blendtree)
嵌套blendtree可以实现走到跑的切换效果。
blendtree的参数设置:1D 2D效果
mecanim动画层的使用:使用层、身体遮罩、权重等设置,可以实现两个层的动画同时播放的效果,比如一边跑一边射击。
mecanim反向运动学运用:可以让角色去精确的抓取物体。脚本里面需要重写OnAnimatorIK,在动画层中,打开IK Pass选项。
mecanim目标匹配:通过animator.MatchTarget函数,可以实现角色攀爬的效果,定位到某个具体目标上。
一般性角色动画:非人类角色动画,也可以使用mecanim动画系统,唯一区别是avatar不可配置。
脚本实现角色跟随效果。
脚本实现群组动画效果。

17、输入与控制:
输入接口:input类
float h = Input.GetAxis(“Horizontal”);
float v = Input.GetAxis(“Vertical”);
判断输入值,然后控制player的移动
getaxis、getkey、getbutton、getjoystick等函数。
注意:unity GUI事件在一帧中可能触发多次。OnGUI函数可能在一帧中执行多次。

18、角色控制器:CharacterController组件
角色控制常规方式:rigidbody、角色控制器(最常用)
角色控制器内置一个capsule collider,所以可以进行碰撞检测。
角色控制器+第一人陈视角可以实现漫游效果。

19、粒子系统:particle system
创建:直接创建一个粒子系统GameObject或者先创建一个Empty的对象,再添加粒子系统组件。
粒子系统功能十分强大,可以创建出各种需要的特效。

20、树:
Tree component
可以使用程序自动生成,但是如果手动调节过后,一些参数将不再可调。
树的基本属性、树干的基本属性、树叶的基本属性、树与地形的配合使用。

21、地形引擎:Terrian
地形工具栏十分重要。下面的操作都是基于工具栏来选择和设置。
地形创建与绘制:注意海平面flatten的设置才能产生凹地效果。
地形纹理和材质的选择和使用。
地形中添加树木、植被。
地形工具栏中最后一项是地形设置。包括基本的地形分辨率显示,树木植被显示,风等效果的设置。
可以使用插件EasyRoads3D来创建公路效果。

22、GUI图形用户界面:
UGUI和NGUI学习。

Unity3D基础知识学习笔记相关推荐

  1. Python 基础知识学习笔记——NumPy

    Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...

  2. Python 基础知识学习笔记——OpenCV(1)

    Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...

  3. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  4. python基础知识学习笔记(2)

    python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...

  5. python基础知识学习笔记(1)

    python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...

  6. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  7. Python基础知识学习笔记(一)

    Python基础知识学习笔记(一) 文章目录 Python基础知识学习笔记(一) (一) 认识python 1.注释 2.变量及类型 3.关键字(标识符) (1)什么是关键字? (2)查看关键字 (3 ...

  8. opencv-python基础知识学习笔记

    opencv-python基础知识学习笔记 原博地址:https://www.cnblogs.com/silence-cho/p/10926248.html 目录: opencv-python基础知识 ...

  9. 图像基础知识学习笔记

    图像基础知识学习笔记 文章目录 图像基础知识学习笔记 前言 一.图像基础知识相关笔记 1.光学系统影响图像的结构主要包括什么? 2.常见噪声都有什么,其分类,及特点? 3.光圈,快门,景深? 4. I ...

最新文章

  1. 北大校友马里千:计算机视觉商用的下一个十年,AI 生成应占有一席之地
  2. linux搭建--ubuntu下安装libvirt注意事项(二)
  3. java类注入service为null_解决webservice(Java)中dao层注入为null问题
  4. boost::hana::insert用法的测试程序
  5. java的4种代码块
  6. pl sql 工具insert into 中文 后, select为乱码
  7. 认证方案之初步认识JWT
  8. frontcon函数用不了_C++复制构造函数与析构函数
  9. 关于提高网站性能的几点建议(二)
  10. 你根本不需要去追求“完美”的软件!
  11. 最近对焦距离与最大放大倍率
  12. MATLAB多算法进行图像去雾处理
  13. 微信小程序云开发入门详细教程
  14. 大学生如何自学PR剪辑以及PS教程?
  15. dump文件导入表修复工具——Imports Fixer
  16. ios android 视频格式,最佳iOS Android手机通用格式高清视频播放器: nPlayer-cue文件
  17. Latex 箭头、下标、符号上下写文字、正方形和三角形
  18. 超级详细讲解根文件系统rootfs的制作
  19. 搅局者·登场 — MateBook X Pro 长测
  20. Arduino读取HC-SR04超声波测距传感器数据附带滤波

热门文章

  1. 唐山校友会会长苏伟与徐飞校长的一次短信交流
  2. 期待台湾出现 OpenNMS Certified Partner
  3. 2010 27寸 imac 升级固态_2017 款 iMac,27 寸升级换 SSD 固态硬盘拆机详解
  4. 学习打卡 2020/2/4
  5. 2062【例1.3】电影票-一 c++语言入门-c++语言
  6. 增删改查--项目基于JavaWeb+Servlet+MySQL的【学生管理系统】
  7. python分割pdf文档
  8. 学计算机的发说说,计算机说说
  9. JS正则表达式手机号中间4位替换成*星号
  10. 谈谈Python的Flask框架学习与福利分享