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
      • 各种组件类

一 课程介绍,二 开发环境

  • Unity窗口布局

    • Hierarchy层级窗口
    • Scene场景窗口,3D视图窗口
    • Game游戏播放窗口
    • Inspector检查器窗口,属性窗口
    • Project项目窗口
    • Console控制台窗口

三 场景与视图

  • scene

    • 先创建
    • 默认场景
  • 游戏场景
    • GameObject游戏物体
  • 3D视图
    • Gizmo导航器

      • shift+点击小方块恢复方向
    • Grid栅格
    • Skybox天空盒
    • 视图操作
      • 旋转

        • alt+lmb
      • 缩放
        • alt+rmb
      • 平移
        • mmb
  • 世界坐标系
    • 左手坐标系
  • 视野中心
    • 聚焦物体

      • 框选+F键
    • 创建物体在视图中心
  • 透视与正交
    • Perspective
    • Orthographic,等距视图Isometric
    • 广角设定Field of view

四 游戏物体

  • 3D原生物体

    • 建模软件
  • 物体的移动
    • 移动工具move tool
  • 旋转与缩放
    • 旋转工具Rotate tool

      • 逆时针为正
      • 精确指定
      • 按住ctrl键,增量增加
    • 缩放工具scale tool
      • 轴向缩放
      • 整体缩放
    • 更多操作
      • 快捷键w,e,r
      • 操作模式
        • 轴心pivot/中心点center
        • global世界坐标系/local局部坐标系
  • 更多操作
    • 多选
    • 复制crtl+D
    • 激活Active
      • 检查器里第一个勾选项
    • 对齐
      • 右键导航器,选择视图
  • AF扩展插件
    • 聚焦,切换视图快捷功能

五 模型

  • 网格mesh

    • 面,顶点,面法向
    • unity观察模式
      • shaded着色模式
      • wireframe线框
      • shaded wireframe线框着色
  • 材质material
    • 物体表面细节
    • mesh renderer组件
  • 纹理texture
    • 物体表面颜色
    • 给材质用
  • 外部模型
    • 标准模型FBX

      • mesh
      • material
    • 贴图
    • 预览
  • 更多细节
    • 背面无渲染
    • 默认材质
  • 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
  • 物体的坐标
    • 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封装)
      • 按索引获取
        • this.trannsform.GetChild(int)
      • 按名称查找
        • this.transform.Find(“路径”)
        • /表示根目录
  • 物体的操作
    • 设置新的父级

      • 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反弹

二十四 碰撞检测

  • 运动学刚体

    • 刚体组件: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站阿发) 总结框架笔记相关推荐

  1. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  2. 【我的Latex学习之路】转载自:E喵的LaTeX新手入门教程(1)准备篇

    E喵的LaTeX新手入门教程(1)准备篇 **声明:**本篇博客转载自E喵的LaTeX新手入门教程,具体的出处我也找不到了,网络上好多好多,觉得他写的不错,于是就作为自己入门的教程,摘抄至此,重新排版 ...

  3. CAD简单圣诞树新手入门教程:

    合适CAD简单圣诞树新手入门教程: 花:1.先画花瓣 2.画两个相交的圆 3.修剪掉不用的边 4.变成花瓣 5.然后选择花瓣应用阵型工具 6.阵型数量为6个 7.这样花就画好了. 树:1.首先用圆弧命 ...

  4. 【LaTeX】E喵的LaTeX新手入门教程(4)图表

    这里说的不是用LaTeX画图,而是插入已经画好的图片..想看画图可以把滚动条拉到底.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇  [LaTeX]E喵的LaTeX新手入门教程(2)基 ...

  5. 想学python都要下载什么软件-学编程闲余时间建议下载的软件_Python新手入门教程...

    原标题:学编程闲余时间建议下载的软件_Python新手入门教程 Python新手入门教程_在手机上就能学习编程的软件 很多小伙伴会问:我在学编程,想利用坐地铁坐公交吃饭间隙学编程,在手机上能学编程的软 ...

  6. 编程入门python语言是多大孩子学的-不学点编程,将来怎么给孩子辅导作业―Python新手入门教程...

    为了填满AI时代的人才缺口,编程语言教育都从娃娃抓起了!如果你还不懂Python是什么将来怎么给孩子辅导作业呢? Python新手入门教程 近期,浙江省信息技术课程改革方案出台,Python言语现已断 ...

  7. 【LaTeX】E喵的LaTeX新手入门教程(6)中文

    假期玩得有点凶 ._.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇  [LaTeX]E喵的LaTeX新手入门教程(2)基础排版  [LaTeX]E喵的LaTeX新手入门教程(3)数学 ...

  8. 【LaTeX】E喵的LaTeX新手入门教程(5)参考文献、文档组织

    这不是最后一篇,明天开始建模所以会从6号开始继续更新.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇  [LaTeX]E喵的LaTeX新手入门教程(2)基础排版  [LaTeX]E喵的 ...

  9. 【LaTeX】E喵的LaTeX新手入门教程(3)数学公式

    昨天熄灯了真是坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇  [LaTeX]E喵的LaTeX新手入门教程(2)基础排版上一期测试答案1.大家一开始想到的肯定是\LaTeX{}e ...

  10. 【LaTeX】E喵的LaTeX新手入门教程(2)基础排版

    换了块硬盘折腾了好久..联想的驱动真坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇文档框架嗯昨天我们已经编写了一个最基本的文档,其内容是这样的:\documentclass{ar ...

最新文章

  1. Gut:卡姆果提取物改变肠道菌群预防小鼠肥胖
  2. promise async 学习笔记
  3. 虚拟机下Linux安装图解之二:虚拟机的创建
  4. 用自定义IHttpModule实现URL重写
  5. HDU 4121 Xiangqi --模拟
  6. Golang gin框架:发送GET POST PUT DELETE请求
  7. python matlablib安装踏坑记
  8. Thread.join的作用和原理
  9. python的模拟登录原理_python---cookie模拟登陆和模拟session原理
  10. 会说话的代码——书写自表达代码之道
  11. 十三、Linux驱动之触摸屏驱动
  12. 第八章 云计算原理与技术
  13. Tensorflow 中 learning rate decay 的奇技淫巧
  14. android 入门教程
  15. 常见分布律、分布函数、概率密度表,伯努利分布、二项分布、泊松分布、几何分布、超几何分布、均匀分布、高斯分布、指数分布
  16. 计算机网络—CSMA/CD协议
  17. error: command ‘/usr/local/cuda-11.6/bin/nvcc‘ failed with exit code
  18. 数字世界的积木-从MOS管搭反相器,与非门,锁存器,触发器
  19. Python3爬取国家统计局官网2019年全国所有城市(2020年更新)
  20. 弘辽科技:市值仅次京东、直追百度,这家韩国巨头什么来头?

热门文章

  1. 360能删除mysql吗_如何把Mysql卸载干净(亲测有效)
  2. 城域网和计算机网络区别,局域网、广域网、城域网的区别是什么
  3. 计算机税率函数,2018最新按5000元个税Excel计算公式,帮你整理齐了!
  4. 举办计算机知识竞赛的意义,计算机专业成功举办“计算机基础知识竞赛”
  5. Android开发关于调用摄像头黑屏没反应的问题
  6. 基于thrift的匹配操作
  7. 所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
  8. Maven聚合SSM项目(八)
  9. 48个快速操作office技巧
  10. 电子邮件群发软件哪种好 电子邮件群发软件怎么用