有使用到的教程:
M_Studio : Your First Game 1-∞
使用的软件:
Unity hub 2.3.9
Unity 2019.4.7f1 LTS
Microsoft Visual C++ 2019
平台:Windows 64-bit
前言:
学的过程挺快乐的 还是看了某个视频才对Unity感兴趣,目前希望至少能做出属于自己的小游戏
Your First Game
M_Studio
Your First Game 1
安装软件 导入素材
Shift + 空格放大窗口
所有素材都要关注单元格像素数
Your First Game 2
编辑素材
自动切片时大小与素材设置的每单元像素数相同为佳
Your First Game 3
图层layer 角色建立
main摄像头z轴需要设置为-10
图层列表中最下面的为最优先显示的图层
同一个图层中图层顺序的值越大越优先显示
场景中瓦片地图(Tilemap)有缝隙时,调整格(Grid)的单元格大小(Cell Size)为X:0.99,Y:0.99。
Your First Game 4
角色移动
很多输入的方法在Unity顶部工具栏的edit - >projectsetting -> input中 这篇教程用到了 Horizontial:水平(玩家按下 右 时输出1 按下 左 时输出-1)
关于代码的解释 在下面的角色控制.cs 中全部注释了出来
关于visual studio2019没有代码补全,需要在 unity edit - 首选项(preferences) - 外部工具(external tools) 把 外部脚本编辑器(script editor) 默认的 open by file extention 改成 visual stdio 2019 如果没有这个选项 点击浏览后添加也是会识别visual stdio 2019的。
或者是需要在VS的选项中:VS-工具-获取-安装UNITY开发包
或是在vs界面的工具 crt+q的搜索框,直接搜索unity,找到单个组件for unity,大小479m。
在游戏开始的情况下更改数值会重置会开始之前的数值,可以通过复制组件,然后在结束游戏的时候粘贴组件的数据的方式保留在游戏中的更改。
Your First Game 5
角色方向 跳跃
全是代码的讲解 差点逼疯我
该大写的一定要记得大写
Your First Game 6
动画效果Animation
添加待机和跑动的动画
关于running的判断:Player的移动有关的数值被running采集,Player在移动时:running的浮点值会不等于0,这时小于0的值,也就是向左移动会被设定好的动画器识别然后修改动画为待机,所以需要将输出的值修改为绝对值。
Your First Game 7
跳跃动画 LayerMask
Layer层的意思是物理碰撞层,修改瓦片地图 与 Player 的物理碰撞层为同一个,就能利用得到的碰撞结果进行落地的判断。

Your First Game 8
修复移动错误
Player会卡住是因为方形碰撞器与地面的碰撞器模拟真实接触导致卡住。需要添加一个圆形碰撞器在下面,盒装碰撞器向上收缩。
Your First Game 9
镜头控制Cinemachine
镜头每帧读取player的位移参数,进行跟随,yz轴锁定
Cinemachine电影感镜头组件,Daed Zone实现区域跟随

给背景设置一个多边形碰撞器 然后勾选背景的Trigger,trigger勾选后不会对碰撞做出物理反应,防止产生与角色碰撞的反应。
给CMvcam(电影感镜头)添加一个Cinemachine Confiner组件,然后连接背景的多边形碰撞器,就会限制镜头只在碰撞器内移动。
Your First Game 10
物品收集 & Perfabs
道具与玩家的动画制作方法相同。
给道具添加碰撞器和Tag 当玩家碰撞到带有Tag的碰撞器时销毁实体,增加一分。
Your First Game 11
物理材质&空中跳跃
给头部的盒装碰撞器添加一个反牛顿光滑材质,就能防止Player粘在墙上,这也是使用两个碰撞器的作用。
判断按下按键的同时&&player与ground碰撞器碰撞 实现禁止左脚踩右脚上天。
Your First Game 12
UI入门
在吃道具之后立刻给UI.text赋值使其显示
Your First Game 13
敌人
动画制作同角色
正在掉落的同时碰撞带有Tag-敌人的碰撞箱就消除实体
然后给予一个跳跃 力量为初始跳跃力量 播放跳跃动画
Your First Game 14
受伤效果
如果上一条成立 将bool受伤设为true
受伤为true时不进行每帧的移动判断,添加一个跳跃为5和速度为5的力,播放受伤动画,直接结束running动画
x轴速度绝对值<2时结束受伤 设受伤bool为false 停止受伤动画

Your First Game 15
AI敌人移动
方形碰撞器同样会造成小怪的卡顿,需要改成圆形。
以小怪为父级,添加两个空的子项目,一左一右就可限制小怪的移动范围。
如图,在右上角可添加空项目的颜色标识
Your First Game 16
Animation Events
玩家:没有y轴的正速度(不在上升)同时不在地面 判定为下落,即可解决站立/奔跑 -> 下落的动画切换
注意在动画器添加站立/奔跑 -> 下落的过渡
小怪:在"站立"动画末尾添加事件:调用函数"移动" 来达成更自然的动画效果
开心啊 233 14号两个小时没做好的效果跟着视频马上就做好了,看来还是不能一意孤行。
Your First Game 17
Class调用(互动包括老鹰制作)
Player无法直接操控小怪的动画播放,但可以生成一个类是"青蛙移动"的叫"青蛙"的实体,当使用"青蛙"时可以调用"青蛙移动"里的所有组件,在青蛙移动中创建一个公开的函数,玩家函数就可以操控青蛙的死亡动画了。
死亡动画最后添加死亡事件即可。
设立一个“敌人”父类,让青蛙和老鹰都属于“敌人”类,从敌人脚本内调用死亡动画
Your First Game 18
音效Audio
Audio Listener 耳朵 👂
Audio Source 音源 🔈
Audio Clips 音频 🎵
角色身上添加音源实现bgm
在公用代码添加小怪死亡音效(小怪受伤音效)
Your First Game 19
对话框Dialog
可以新建一个游戏项目然后放上碰撞器来把任何地方作为触发器

Your First Game 20
趴下效果Crouch
在趴下的时候关闭上半身的方形碰撞器
用一个新的项目放头顶检测上半身有没有groud碰撞器来限制下蹲与站起来(站不起来的小狐狸
Gizmos可控制小组件的显示 - >
Your First Game 21
场景控制SceneManager
角色碰撞带有死亡Tag的碰撞器,延时触发死亡机制,用
Invoke(nameof(重启),2f);
延迟执行,这样写更好些,不会因为字符串和方法名不一致导致错误。
把按下E切换场景的脚本与“按下E切换场景”的提示绑定,就可以减轻游戏负担并且更方便
在生成设置中设置场景编号,就可以在代码使用编号跳转了

Your First Game 22
2D光效(ver. Unity2018)
在2019.2以上可以用lightweightRP实现光照(然而没有教)
实现好的光照需要 法线贴图
瓦片地图可以直接使用default-diffuse默认散射材质,其他需要手动做一个材质 如右图
光其实是3D的 Z轴对效果有影响,如果光z轴是0那么就没有光的效果了。(按住右键+WASD可以移动视角)

对应第三节课,光照时场景中瓦片地图(Tilemap)有缝隙(线)时,调整格(Grid)的单元格大小(Cell Size)为X:1, Y:1。
如果还有缝隙 那么可以修改游戏质量中的抗锯齿为无


如果过于暗,可以打一个定向光。

Your First Game 23
在小怪被击杀时关闭碰撞器,防止播放死亡动画时有二次碰撞。
死亡动画最后的死亡事件向前放可以让死亡效果更加顺畅
关于道具有概率获得两个的bug修复(我失败了)以后再搞定这个吧咕。
Your First Game 24
视觉差Parallax
if (lockY)
transform.position = new Vector2(始点x + 摄像机.position.x * 移动范围, transform.position.y);
Your First Game 25
主菜单MainMenu
-主菜单Menu的建立
-了解TextMeshPro基本用法
-按键Button如果实现调用函数
-小技巧GameObject.Find()的用法
Your First Game 26
暂停菜单 AudioMixer
控制时间流速 Time.timeScale = 1f;
-暂停菜单的创建
-AudioMixer的介绍
-滑动条Slider如何调整游戏声音
将混音器的音量设置成代码可编辑的


设置后自定义名字就可在代码内编辑
混音器.SetFloat("主声音", 音量);
2019.2版的Unity无法直接选中音量控制函数 反正2019.4可以,233

2019.2的看这个视频
Your First Game 27
手机控制|触控操作|真机测试
所有屏幕触控的交互按键都是UI
这个预制的手柄松手会导致值瞬间=0 所以需要加上
if (是否移动 == 0)
动画器.SetFloat("running", 0);
不知道是不是临时变量的原因,电脑与手机的操作放一起会导致电脑操作不可用


Your First Game 28
二段跳|单向平台
与头顶点一样添加一个脚底的点
Vector2.up是new Vector2 (0,1)的简写
Vector2.down是new Vector2 (0,-1)的简写
每次跳跃跳跃次数减一
单向平台需要如图设置
打开瓦片地图碰撞器的由效果器使用,单向组件关闭碰撞器遮罩,打开使用单向。
Your First Game 29
音效管理SoundManager(Static)
用一个项目来控制所有音频
每需要播放一个音频就将此音频交给音源
[SerializeField]将私有的变量仍在unity的窗口显示

Your First Game 30
完结撒花
做得好牛逼啊爱了爱了(