Unity3D 学习计划和知识总结

遇坑填坑

  1. Unity2017编辑器不能通过unity hub直接打开项目,否则就会报没有授权码的问题,必须直接从unity2017编辑器中打开,按流程登录自己的账号密码,并且选择个人版才能使用
  2. 青蛙过马路如果选择binding path找不到position时,重新安装Input System,然后先选择pass through,就能出现position,但是到底是重新安装input system影响还是先选择pass through影响,总之到时两个都试下吧,2022.1.8f1版本下

通用知识点

  1. 刚体(RigidBody三种body type)
    1. static 用来做地板,墙壁,岩石等不同的物体,能让其他动力刚体产生碰撞效果,但是自身并没有效果
    2. kinematic 移动刚体,能让其他动力刚体产生碰撞效果,但是自身只发生位移,并不产生力碰撞的效果,适合做NPC,或者既定路线的游戏物体
    3. Dynamic 动力刚体,让其他物体发生碰撞效果,自身也会有碰撞效果,例如敌人,或者参与互动游戏的物体
  2. transparency sort mode 和 transparency sort axis
    1. 透明模式,物体有透明和非透明两种,两种物体的叠加渲染方式不一样,原因是透明物体必须由远及近,这样不同透明的亮度或者颜色才能产生叠加效果,最后渲染出来,而非透明物体没有必要,用由远及近的方式反而浪费渲染的时间因为最终是不会被展示出来的,所以非透是由前往后;
    2. 选择custom axis(自定义坐标轴)的目的是给远近这个概念设置一个参考系,坐标轴的正向为远,负向为近;渲染透明物体和非透物体的方式不变
    3. transparency sort axis中的xyz的值是个布尔值,1表示开启,0表示关闭,一般2D选择Y,3D选择Z
    4. 默认采用是透视投影模式(Perspactive),正交投影(Orthographic)不常用,通常用在UI,地图,2D游戏,动画预览(枪模型预览),所以不需要透视效果的都会用正交投影

B站课程本周就可以搞完了:https://www.bilibili.com/video/BV1gQ4y1e7SS

目前周日能看到40集,基本能对 unity3D 软件版面有一个整体的认知,知道什么功能干什么,不至于看界面后一阵紧张

  1.  原计划本周看到40集,现在已经看完,开始先学习青蛙过马路,先把新版 2021 练熟再改造老代码才能得心应手哔哩哔哩_bilibili  

1.  接下来从一个最新版的小游戏,付费课程入手:哔哩哔哩_bilibili ,导入项目运行一个小游戏,看一个小游戏如何运行起来,以及如何交互的,通过修改 C# 脚本的一些逻辑,对 C# 语言,以及 常用Unity API 和 Unity 周期函数快速掌握。 

  1. 青蛙过马路又一次回顾了动画这个功能,总结一下,动画必须绑定一个物体,然后才能创建,可以创建多个动画,创建动画前先创建一个animator组件,这样这个物体的所有动画都会有这个animator组件进行控制了。
  2. 多个动画的过程操作,通过连接线进行转化,转化方式为Trigger最方便,如果没有转化条件,则意味着动画执行完毕后,则自动转化为上一个状态,例如跳完后就是休息状态;
  3. 创建动画的过程记录,先创建animator,再创建动画,然后创建物体的脚本,脚本中创建帧函数,保存后,再在具体帧添加事件,这个顺序不要乱,否则总是会遇到一些问题;
  4. 使用fixedUpdate时,可以理解为定时刷新,update则是每一帧刷新前处理逻辑,两者因为距离的时间比较近,所以感觉是一起执行,其实update要比fixedUpdate频繁;
  5. 整体理解则是,一顿操作后,在下一帧来临前,我们要判断干什么,其他都是过程处理或者状态处理。
  6. 也就是说,你的各种响应事件都在update之前进行处理,最后保持一种状态,update函数开始判断要不要干活,干完活,要不要复位,可以这样理解,整个app启动后,awake相当于app的启动,start相当于每个场景的启动,所以awake是单例,之后所有的操作数据都在application中了,过一段时间后,开始执行一次update操作,或者fixedUpdate操作,两个函数获取的数据都是app这里面的,同时这个app是在异步协程执行,彼此之间不会出现数据冲突,所以可以放心来倒腾。
  7. 因此2D游戏中,只要保证前进位置,另外能操控角色执行各种动画效果,实现碰撞检测并做出反应,则一个2D游戏就基本做的差不多了,真得很简单;
  8. 子物体绑定的脚本类型可以在父物体脚本中直接使用,将小汽车下挂在锚点父物体下后,再创建了小汽车后,因为小汽车中含有 MoveForward 脚本,则父物体可以直接使用这个类型
    1. 留个疑问,是不是脚本类型都是互联互通的,而不是用额外 using 引入?这个后期可以尝试下;
  9. 摄像机运行时,并非是所见即所得,主要是 offsetY 的调节,这个就类似于投影机的高度,调整高度,可以将放出来的区域的 Y 轴进行调节,调整该参数,则可以让自己所见即所得;
  10. unity 采用了监听的方式来处理一些逻辑,其中动画的执行,就有变量的 int,bool监听,通过直接设置这些变量的值就能触发动画的执行。
  11. 此外也会有提前给物体绑定一些触发函数,如果你重写了这些函数,则说明你会定义这些动作,如果你没重写,就代表你默认这些动作。
  12. unity 中很多生成对象(spawn object)都应该是预制体,创造的预制体理论上应该可以像手动调整时一样,进行动态的处理所有状态

2.  接下来将 unity 2017 版的坦克大战改造成 unity 2019 版的代码,保证不报错还能运行

3.  然后把《勇士游戏》看过,代码运行起来,代码进行解读,充分了解 2D 游戏的运行机制

之后花费 2-3 天时间将 C# 语法过完:

  • 不需要额外时间来学习,脚本而已
  • 具体参考:C# 教程_w3cschool 越快越好的掌握C#编程
  • 借助 ChatGPT 来寻找 C# 的差异,进行特异化学习,尽快掌握 C#与其他语言的不同点
  • 2. 相同的逻辑先用 js 来写,写完让ChatGPT 来翻译,以达到更快地掌握 C# 和 JS 语言的不同之处

4. 看完勇士之后,看《麦田物语》掌握养成类游戏的设计和时间调度,以及本地存储;

5. 接下来应该找联网类游戏开始学习,怎么处理联网类游戏?2D 入手比较简单

4. 开始接触 unity3D 类游戏入门教程

  1. 淘宝这个养成类游戏看起来还不错:https://item.taobao.com/item.htm?id=699500219027 到时从这个入手

猜你喜欢

转载自blog.csdn.net/wangsenling/article/details/131693199