Unity3D新手入门教程 (b站阿发) 总结框架笔记
Unity3D新手入门教程
文章目录
- Unity3D新手入门教程
- 个人总结
- 一 课程介绍,二 开发环境
- 三 场景与视图
- 四 游戏物体
- 五 模型
- 六 资源文件
- 七 物体操作
- 八 组件Component
- 九 脚本
- 十 帧更新
- 十一 物体的运动
- 十二 物体的旋转
- 十三 脚本的运行
- 十四 脚本的参数
- 十五 鼠标键盘输入
- 十六 组件的访问
- 十七 物体的访问
- 十八 资源的访问
- 十九 定时调用
- 二十 向量
- 二十一 预制体
- 二十二 动态创建实例
- 二十三 物理系统
- 二十四 碰撞检测
- 二十五 射击游戏项目实例
- 附件 脚本汇总
个人总结
- 编辑器操作
- 窗口布局
- 资源目录
- 场景文件*.unity
- 资源包*.unitypackage
- 物体操作
- 父子关系
- 相对坐标系设置,坐标系模式
- 编辑模型,材质,纹理,预制体,各种资源
- 脚本操作
- 设置脚本优先级
- 基础知识
- 坐标系
- 透视正交
- 模型FBX
- mesh网格
- material材质
- texture贴图纹理
- perfab预制体
- 组件Component
- Transform
- 音效,碰撞,刚体,网格,渲染,脚本
- 脚本组件
- 脚本编写
- 执行逻辑
- 继承
- 消息
- Awake
- Start
- Update
- 执行对象
- MoniBehaviour
- Invoke
- GameObject
- Transform
- 移动
- 父子关系
- Vector3
- Time
- Input
- Camera
- Screen
- Object动态创建实例
- Random
- 各种组件类
- MoniBehaviour
- 执行逻辑
一 课程介绍,二 开发环境
- Unity窗口布局
- Hierarchy层级窗口
- Scene场景窗口,3D视图窗口
- Game游戏播放窗口
- Inspector检查器窗口,属性窗口
- Project项目窗口
- Console控制台窗口
三 场景与视图
- scene
- 先创建
- 默认场景
- 游戏场景
- GameObject游戏物体
- 3D视图
- Gizmo导航器
- shift+点击小方块恢复方向
- Grid栅格
- Skybox天空盒
- 视图操作
- 旋转
- alt+lmb
- 缩放
- alt+rmb
- 平移
- mmb
- 旋转
- Gizmo导航器
- 世界坐标系
- 左手坐标系
- 视野中心
- 聚焦物体
- 框选+F键
- 创建物体在视图中心
- 聚焦物体
- 透视与正交
- Perspective
- Orthographic,等距视图Isometric
- 广角设定Field of view
四 游戏物体
- 3D原生物体
- 建模软件
- 物体的移动
- 移动工具move tool
- 旋转与缩放
- 旋转工具Rotate tool
- 逆时针为正
- 精确指定
- 按住ctrl键,增量增加
- 缩放工具scale tool
- 轴向缩放
- 整体缩放
- 更多操作
- 快捷键w,e,r
- 操作模式
- 轴心pivot/中心点center
- global世界坐标系/local局部坐标系
- 旋转工具Rotate tool
- 更多操作
- 多选
- 复制crtl+D
- 激活Active
- 检查器里第一个勾选项
- 对齐
- 右键导航器,选择视图
- AF扩展插件
- 聚焦,切换视图快捷功能
五 模型
- 网格mesh
- 面,顶点,面法向
- unity观察模式
- shaded着色模式
- wireframe线框
- shaded wireframe线框着色
- 材质material
- 物体表面细节
- mesh renderer组件
- 纹理texture
- 物体表面颜色
- 给材质用
- 外部模型
- 标准模型FBX
- mesh
- material
- 贴图
- 预览
- 标准模型FBX
- 更多细节
- 背面无渲染
- 默认材质
- FBX的使用
- 贴图路径
- 同路径
- 同级Textures目录
- 多个材质
- 材质替换
- 操作.fbx文件
- 重映射Remap
- 使用外部材质use external materials
- 贴图路径
- 分解重组
- 点开.fbx直接用里面的东西
六 资源文件
- Assets资源目录
- Modle,Texture,AudioClip,Script,Material
- Meta,描述文件
- 场景文件*.unity
- 场景全局设置
- 节点
- 组件
- 属性参数
- 资源包*.Unity Package
- 导入
- 导出
- 依赖文件
- Unity资源商店
七 物体操作
- 轴心Pivot
- 物体操纵基准点
- 父子关系
- 两个物体之间组合,依赖
- 相对坐标
- 空物体EmptyObject
- 容器
- 作用
- 节点组织管理
- 标记
- Global和Local
- Global世界坐标系
- Local本地坐标系
- 左手坐标系
- Pivot和Center
- 轴心模式:自定义操作基准
- 几何中心模式
八 组件Component
- 代表功能
- 添加删除组件
- light
- mesh filter
- mesh renderer
- AudioSource
- Transform
- 必须项,不可被删除
- 摄像机Camera
- z轴为拍摄方向
- Align with View对齐视角
九 脚本
- 脚本:游戏驱动逻辑
- 脚本名与类名一致
- 挂载
- 当前物体
- this当前脚本组件对象
- this.gameObject当前物体
- this.gameObject.name当前物体名字
- 利用物体对象获取其他属性
- 简写
- this.gameObject.transform等同于this.transform
- using UnityEngin(API命名空间)
- 脚本类继承自MonoBehaviour
- 三维向量类Vector3
- this当前脚本组件对象
- 物体的坐标
- transform.position世界坐标
- transform.localPosition本地坐标
- 以父节点为基准
- 以自己为基准
- Vector3三维向量类
- 播放模式
- 实时显示
- 更改不保存
十 帧更新
- 帧更新
- Frame,FrameRate,FPS
- Update()
- Time
- Time.time
- Time.deltaTime时间差
- Application.targetFrameRate近似帧率
- 移动物体
- 更新positaion
- 匀速运动
- 设置speed
- distance=speed*Time.deltaTime;
- 以vector3为基本单位
十一 物体的运动
- 物体的运动
- transform.Translate(dx,dy,dz,…)
- 相对运动
- tarnsform.Translate(dx,dy,dz,space)
- space=Space.World|space.Self
- 运动方向
- 获取目标物体
- GameObject.Find()
- 转向目标
- transform.LookAt()
- z轴指向目标
- 获取目标物体
- 小练习:达到目标停止
- vector.magnitude获取向量值
- if语句
十二 物体的旋转
- 物体旋转
- transform.rotation不建议用
- transform.eulerAngles
- transform.LocalEulerAngles
- 匀速转动
- 相对旋转
- transform.Rotate()
- 自转和公转
- 公转:围绕另一个物体一起转动
十三 脚本的运行
- 脚本的运行
- 场景的加载过程
- 创建节点
- 实例化组件
- 实例化脚本组件
- 场景的加载过程
- 消息函数(事件函数,回调函数)
- Awake
- Start
- Update
- OnEnable
- OnDisable
- 脚本执行顺序
- 消息函数调用顺序
- 第一阶段初始化Awake()
- 第二阶段Start()
- 帧更新
- 脚本优先级
- Execution Order
- 消息函数调用顺序
- 主控脚本
- MainLogic
十四 脚本的参数
- 脚本参数
- 公有数据成员
- 参数赋值顺序
- 类中初始化默认值
- 检查器赋值
- Awake
- Start
- 值类型
- 结构体类型
- int,float,boll…
- Vector3,Color
- 引用(类)类型
- 节点
- 组件
- 资源
- 数组类型
- 结构体类型
- 运行时调试保存参数
- play mode下copy component
- edit mode下paste component values
十五 鼠标键盘输入
- 鼠标输入
- Input.GetMouseButtonDown(int)
- Input.GetMounseButtonUp(int)
- Input.getMouseButton(int)
- 0左键,1右键,2中键
- 更多细节
- 事件只触发一次
- 状态每帧一次
- 全局事件互不干扰
- 屏幕坐标
- 获取屏幕坐标
- Input.mousePosition
- 左下角原点
- 世界坐标转化屏幕坐标
- Camera.main.WorldToScreenPoint(world pos)
- 屏幕对象
- Screen.Width
- 获取屏幕坐标
- 键盘输入
- Input.GetKeyDown(keycode)
- Input.GetKeyUp(keycode)
- Input.GetKey(keycode)
- KeyCode.A
十六 组件的访问
- 组件的调用
- AudioSourse audio = this.GetComponent<>()
- audio.Play()
- 组件的参数
- 获取组件后访问公有数据成员
- 引用其他节点组件
- 先获取节点,在获取组件
- 直接声明组件,将含有组件的节点拖过去,unity自动完成引用
- 引用脚本组件
- 消息调用
- 获取节点target
- 发送消息
- target.SendMessage(methondName,value)
- 反射机制,同步调用
- 练习 简单飞控
- 主控脚本
- 飞行脚本
- 旋转脚本
十七 物体的访问
- 获取节点
- GameObject node = GameObject.Find(“”);
- 声明公有变量,拖过去
- 父子物体
- 利用Transform维持
- 获取父级
- this.transform.parent
- this.transform.parent.gameObject获取父节点
- 获取子集
- foreach遍历
- foreach(Transform child in 父级)
- child.name等同于child.gameObject.name(unity封装)
- foreach(Transform child in 父级)
- 按索引获取
- this.trannsform.GetChild(int)
- 按名称查找
- this.transform.Find(“路径”)
- /表示根目录
- foreach遍历
- 物体的操作
- 设置新的父级
- this.transform.SetParent(Transform p)
- this.transform.SetParent(null)设置为一级节点
- 设置显示隐藏
- GameObject.setActive(bool)
- 设置新的父级
十八 资源的访问
- 音频资源使用
- AudioClip音频文件
- AudioSource.PlayOneShot(clip)播放短的音效
- ac.clip = clip;指定音乐
- ac.Play();播放
- 材质资源使用
- Material
- MeshRenderer rd
- rd.material
- 资源数组
十九 定时调用
- MonoBehaviour成员函数
- Invoke(string func,float delay)字符串反射函数
- InvokeRepeating(string func,int interval)
- 定时调度互相独立
- IsInvking(func)
- CancellInvoke(func)
- 定时与线程
- 单线程
- 获取线程号
- using System.Treading;
- Thread.CurrentThread.ManagedRhreadId
- 红绿灯练习
- 利用递归Invoke实现周期性改变颜色
- 加速减速练习
二十 向量
- 向量
- 长度v.magnitude
- 单位向量标准化
- v.normalized
- 向量常量
- zero,right,forward
- 向量运算
- 加减乘除,赋值
- 向量测距
- v.Distance(a,b)
- 向量使用
二十一 预制体
- 预制体
- *.prefab
- 预制体创建
- 仅包含引用信息
- 预制体的实例
- UpPack取消关联
- 预制体的编辑
- 单独编辑
- 双击资源管理器中prefab
- 原位编辑
- 选择场景中预制体,点击open
- 显示模式:normal/gray/hidden
- 覆盖编辑
- 选择场景中预制体,直接编辑
- overeides|Appyy或Revert
- 单独编辑
- 多级节点
二十二 动态创建实例
- 动态创建实例
- 使用Prefab
- Object.Instantiate(obj perfab,parent)
- 实例的初始化
- position位置
- eulerAngles旋转
- Script
- 实例销毁
- Object.Destroy(obj)超类静态方法
- 练习:火控,炮塔控制
- 创建炮塔,炮管,子弹预制体
- 脚本
- 火控
- 创建子弹,位置,角度,速度,距离,生命周期
- 子弹脚本
- 控制自毁
- 别绑到炮塔上了
- 炮塔控制
- 控制炮塔旋转
- 如果要限制转动角度
- 使用转动角度变量
- eulerAngles范围为[0,360]
- 控制射击
- 控制炮塔旋转
- 火控
二十三 物理系统
- 物理系统
- Rigidbody刚体组件,拥有重力
- 物理碰撞
- Collider碰撞体组件
- 反弹与摩擦
- Physici Material物理材质
- Friction摩擦
- Bounciness反弹
- Physici Material物理材质
二十四 碰撞检测
- 运动学刚体
- 刚体组件:Kinematic无重力
- 碰撞检测
- 碰撞体组件:Trigger触发器
- 消息函数OnTriggerEnter(Collider other)
- other.gameObject对方节点
- 碰撞体的编辑
- 球形碰撞体
- 盒形碰撞体
- 练习 击毁目标
二十五 射击游戏项目实例
- 需求分析
- 移动
- 射击
- 打怪
- 音乐
- 功能设计
- 角色
- 主角
- 怪物
- 子弹
- 特效
- 功能
- 创建对象
- 子弹生成销毁
- 怪物的生成销毁
- 管理对象
- 主角移动
- 怪物移动
- 交互逻辑
- 子弹碰撞
- 特效
- 背景音乐
- 创建对象
- 角色
- 功能实现
- 创建所用预制体
- 分功能编写脚本
- 拖拖拽拽
- 测试
附件 脚本汇总
//脚本//this当前脚本组件继承自MonoBehaviour//消息函数void Start()void Update()//获取物体,读写其属性//获取当前物体GameObject obj = this.gameObject;//获取场景内其他物体flag = GameObject.Find("红旗");//获取位置//this.gameObject.transform等同于this.transformVector3 pos = this.transform.position;pos = this.transform.localPosition;//访问父子层级this.transform.parentthis.transform.parent.gameObject//获取父节点public Transform RusCude;Transform child = RusCude.GetChild(index); //资源使用//音频和材质,准备好材料和playerpublic Material[] colors;public AudioClip[] musics;MeshRenderer mr;AudioSource musicPlayer;musicPlayer.clip = musics[index];musicPlayer.Play();mr.material = colors[index];//物体运动//匀速运动:根据速度设置前进距离distance = speed * Time.deltaTime;this.transform.Translate(0, 0, distance);//运动方向this.transform.LookAt(flag.transform);//匀速转动this.gameObject.transform.localEulerAngles += new Vector3(0, rotationSpeed * Time.deltaTime, 0);float rotationSpeed = 120;this.transform.Rotate(0, rotationSpeed * Time.deltaTime, 0, Space.Self);//定时调用Invoke("ChangeColor", 4);//递归用法模拟重复调用//监听输入Input.GetMouseButtonDown(0)Input.GetKey(KeyCode.W)//使用预制体 //实例化,使用public GameObject bulletPre;GameObject bullet = Instantiate(bulletPre,bullets);bullet.transform.position = cannonMouth.position;bullet.transform.rotation = cannonDirection.rotation;//超类静态方法销毁Object.Destroy(this.gameObject);
//物理碰撞//消息函数,Collider类private void OnTriggerEnter(Collider other)
//全局设置//设置近似帧率Application.targetFrameRate = 60;//常用类的静态属性&方法//时间Time.timeTime.deltaTime//屏幕Screen.width//输入Input.mousePosition//摄像机Camera.main.WorldToScreenPoint(this.transform.position)//数学Random.Range(int min,int max)
Unity3D新手入门教程 (b站阿发) 总结框架笔记相关推荐
- python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析
Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...
- 【我的Latex学习之路】转载自:E喵的LaTeX新手入门教程(1)准备篇
E喵的LaTeX新手入门教程(1)准备篇 **声明:**本篇博客转载自E喵的LaTeX新手入门教程,具体的出处我也找不到了,网络上好多好多,觉得他写的不错,于是就作为自己入门的教程,摘抄至此,重新排版 ...
- CAD简单圣诞树新手入门教程:
合适CAD简单圣诞树新手入门教程: 花:1.先画花瓣 2.画两个相交的圆 3.修剪掉不用的边 4.变成花瓣 5.然后选择花瓣应用阵型工具 6.阵型数量为6个 7.这样花就画好了. 树:1.首先用圆弧命 ...
- 【LaTeX】E喵的LaTeX新手入门教程(4)图表
这里说的不是用LaTeX画图,而是插入已经画好的图片..想看画图可以把滚动条拉到底.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇 [LaTeX]E喵的LaTeX新手入门教程(2)基 ...
- 想学python都要下载什么软件-学编程闲余时间建议下载的软件_Python新手入门教程...
原标题:学编程闲余时间建议下载的软件_Python新手入门教程 Python新手入门教程_在手机上就能学习编程的软件 很多小伙伴会问:我在学编程,想利用坐地铁坐公交吃饭间隙学编程,在手机上能学编程的软 ...
- 编程入门python语言是多大孩子学的-不学点编程,将来怎么给孩子辅导作业―Python新手入门教程...
为了填满AI时代的人才缺口,编程语言教育都从娃娃抓起了!如果你还不懂Python是什么将来怎么给孩子辅导作业呢? Python新手入门教程 近期,浙江省信息技术课程改革方案出台,Python言语现已断 ...
- 【LaTeX】E喵的LaTeX新手入门教程(6)中文
假期玩得有点凶 ._.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇 [LaTeX]E喵的LaTeX新手入门教程(2)基础排版 [LaTeX]E喵的LaTeX新手入门教程(3)数学 ...
- 【LaTeX】E喵的LaTeX新手入门教程(5)参考文献、文档组织
这不是最后一篇,明天开始建模所以会从6号开始继续更新.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇 [LaTeX]E喵的LaTeX新手入门教程(2)基础排版 [LaTeX]E喵的 ...
- 【LaTeX】E喵的LaTeX新手入门教程(3)数学公式
昨天熄灯了真是坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇 [LaTeX]E喵的LaTeX新手入门教程(2)基础排版上一期测试答案1.大家一开始想到的肯定是\LaTeX{}e ...
- 【LaTeX】E喵的LaTeX新手入门教程(2)基础排版
换了块硬盘折腾了好久..联想的驱动真坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇文档框架嗯昨天我们已经编写了一个最基本的文档,其内容是这样的:\documentclass{ar ...
最新文章
- Gut:卡姆果提取物改变肠道菌群预防小鼠肥胖
- promise async 学习笔记
- 虚拟机下Linux安装图解之二:虚拟机的创建
- 用自定义IHttpModule实现URL重写
- HDU 4121 Xiangqi --模拟
- Golang gin框架:发送GET POST PUT DELETE请求
- python matlablib安装踏坑记
- Thread.join的作用和原理
- python的模拟登录原理_python---cookie模拟登陆和模拟session原理
- 会说话的代码——书写自表达代码之道
- 十三、Linux驱动之触摸屏驱动
- 第八章 云计算原理与技术
- Tensorflow 中 learning rate decay 的奇技淫巧
- android 入门教程
- 常见分布律、分布函数、概率密度表,伯努利分布、二项分布、泊松分布、几何分布、超几何分布、均匀分布、高斯分布、指数分布
- 计算机网络—CSMA/CD协议
- error: command ‘/usr/local/cuda-11.6/bin/nvcc‘ failed with exit code
- 数字世界的积木-从MOS管搭反相器,与非门,锁存器,触发器
- Python3爬取国家统计局官网2019年全国所有城市(2020年更新)
- 弘辽科技:市值仅次京东、直追百度,这家韩国巨头什么来头?
热门文章
- 360能删除mysql吗_如何把Mysql卸载干净(亲测有效)
- 城域网和计算机网络区别,局域网、广域网、城域网的区别是什么
- 计算机税率函数,2018最新按5000元个税Excel计算公式,帮你整理齐了!
- 举办计算机知识竞赛的意义,计算机专业成功举办“计算机基础知识竞赛”
- Android开发关于调用摄像头黑屏没反应的问题
- 基于thrift的匹配操作
- 所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
- Maven聚合SSM项目(八)
- 48个快速操作office技巧
- 电子邮件群发软件哪种好 电子邮件群发软件怎么用