02 2024 档案
摘要:打包前需要一个初始场景 新建一个场景,名叫Initialization,然后在它下面挂载一个 GameObject 名叫InitialLoad,上面挂载一个脚本InitialLoad,内容为 using System.Collections; using System.Collections.Gen
阅读全文
摘要:打开设置面板 UIManager 注册了设置按钮的监听 如果 pausePanel 原来是 active 的话,则隐藏它,并取消暂停。如果 pausePanel 原来不是 active 的话,则显示它,并暂停游戏 调节音量 PausePanel 上有个滑动条,记录了音量。当暂停事件触发的时候,从 a
阅读全文
摘要:添加虚拟手柄 如上图所示,绘制虚拟手柄,包括左侧操作杆和右侧NESW键 给左侧操作杆添加 On-Screen Stick 给右侧按钮添加 On-Screen Button 因为我们使用的是新输入系统,所以这些虚拟按键就能直接使用了 PC 版不显示虚拟手柄 使用 UNITY_STANDALONE 宏,
阅读全文
摘要:安装 newtonsoftjson newtonsoftjson 是一个比 JsonUtility 更好的 JSON 工具,但是 Unity Registry 没办法直接下载,需要点击 Package Manager 左上角的 + 号,点击 Add package from git URL,输入 c
阅读全文
摘要:界面 先制作一个简单的 Game Over 面板 人物死亡的时候打开 Game Over 面板 创建一个 GameOver Event 人物死亡的时候触发 GameOverEvent UIManager 接收 Game Over Event UIManager 会打开 GameOverPanel,并
阅读全文
摘要:人物数值保存加载 在 Data 中添加一个 floatSavedData 然后在 Character 里面进行设置,读取血量之后记得通知血条栏更新血量 场景保存加载 Data 中增加一个字符串,用于存储场景信息。存储的时候传入一个 GameSceneSO,通过 JsonUtility 转换为 字符串
阅读全文
摘要:使用 ISaveable 标识可保存的数据 现在 C# 也像 Java 一样,接口可以写默认实现。大括号的写法和=>的写法是完全一致的 使用 DataManager 来统一管理所有数据 using System.Collections; using System.Collections.Generi
阅读全文
摘要:制作一个可以点亮的存储点 切图 第一张是存储点的基座,第二张是存储点上面的文字 将它们组合在一起就是存储点了 让存储点可交互 核心代码与宝箱的代码完全一致 using System.Collections; using System.Collections.Generic; using UnityE
阅读全文
摘要:实现新的冒险 添加 New Game Event SO 使用 Void Event SO 创建 New Game Event SO 点击新的冒险发布事件 订阅新的冒险事件 由 SceneLoadManager 订阅事件 为了区分菜单场景和第一次加载场景,分别使用的 MenuScene MenuPos
阅读全文
摘要:最终形态 新建一个场景 Menu,将物品摆放上去,并在上面添加文字,文字使用 TextMeshPro,字体使用得意黑 此外还要注意,Game Scenes 里面要添加名为 Menu 的 GameSceneSO Menu 场景也要放到 Addressable 上面 制作完主场景之后,有两件事需要注意
阅读全文
摘要:DoTween 实现淡入淡出 定义淡入淡出事件 切换场景的时候发布淡入淡出事件 卸载场景的时候,蒙版变黑 场景加载完之后,蒙版变透明 创建 FadeCanvas 以及监听淡入淡出事件 项目相关代码 代码仓库:https://gitee.com/nbda1121440/2DAdventure.git
阅读全文
摘要:解决场景加载后人物坐标不正确的问题 在 SceneLoader.UnLoadPreviousScene 中,场景卸载掉之后,需要将人物隐藏 场景加载完之后,需要执行回调 在回调中,需要设置当前加载的场景,设置人物的坐标,显示人物,并发布场景完成后的事件 注意,afterSceneLoadedEven
阅读全文
摘要:使用 Addressable 如下图所示安装 Addressables 打开 Addressables 创建 Addressables Settings 创建完毕之后,就能在 Assets 目录下找到配置好的文件 我们把默认的 Group Name 改成 Scenes 然后选择场景,勾选 Addre
阅读全文
摘要:创建可互动接口 实现宝箱代码 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Chest : MonoBehaviour, IInteractable { priv
阅读全文
摘要:场景中叠加场景 将两个场景的公用部分提取到 Persistent 场景中,之后需要使用哪个场景,只需要把那个场景添加到 Persistent 场景下面就行了 注意,如果要往场景中添加物体的话,需要先把场景激活 添加宝箱 先切割宝箱图片,然后把宝箱放到场景中,给宝箱添加 Box Collider 2D
阅读全文
摘要:修改场景中的 Grid 它们都要有 Tilemap Collider 2D 组件,并且 Is Trigger 为 true 给 水 添加 Water 标签 人物碰到水就死亡 修改 Character.cs,增加 OnTriggerStay2D 方法 添加荆棘 然后再给荆棘添加 Attack 组件 项
阅读全文
摘要:免费音乐和音效 音效:https://assetstore.unity.com/packages/audio/sound-fx/free-casual-game-sfx-pack-54116 音乐:https://assetstore.unity.com/packages/audio/music/f
阅读全文
摘要:Cinemachine 安装 cinemachine 添加 cinemachine 添加完之后,需要将 Player 作为 Cinemachine 的 Follow 对象 之后摄像机默认就能跟随玩家了,我们还可以调整一些参数 通过设置 Dead Zone 给摄像机一个缓冲值,中心点没有离开缓冲区域的
阅读全文
摘要:动画 我们需要快速打断滑铲,所以没用结束滑铲 动画状态机中,使用了 isSlide 这个布尔变量 New State -> blueSlide0,需要 isSlide = true,立即进入 blueSlide0 -> blueSilde1,需要 isSlide = true,完整播放一次之后进入
阅读全文
摘要:滑墙的实现方式 动画 使用滑墙图片制作滑墙动画,只有一帧的动画 动画状态机中,增加了 onWall 这个 bool 变量,以及 blueWallSlide 这个状态 当 onWall == true 时,从 Jump 立即切换到 blueWallSlide 当 onWall == false &&
阅读全文
摘要:使用 ScriptableObject 实现血量更新 创建 ScriptableObject 内容如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.E
阅读全文
摘要:Colourful Hierarchy Category GameObject 插件 用于美化 Hierachy 窗口 通过查看 Color Palette 可以知道用法 UI InputSystem 冲突 我们的项目使用了最新的 Input System,所以需要按上图所示进行操作,以便 UI 也
阅读全文
摘要:动画 动画状态机改成这样 当 run = true 的时候,从 beeFly 立马切换到 beeChase 当 run = false 的时候,从 beeChase 立马切换到 beeFly 当 hurt 触发的时候,从 Any State 立马切换到 beeHurt,当 beeHurt 完整播放一
阅读全文
摘要:动画 切割图片,制作动画,注意:锚点在中心点 注意:beeFly 和 beeChase 使用相同的动画,但是速度不一样 代码 Enemy 因为 蜜蜂 的行动方式与 野猪、蜗牛 都不一样,它是在空中飞的,所以它检测玩家和移动的方式都是不一样的,所以我们需要对 Enemy 中 FoundPlayer、O
阅读全文
摘要:动画 增加一个叫 skill 的 Trigger,以及一个叫 hide 的 bool 变量 当 skill 触发,并且 hide = true 的时候,立马进入 snailHide 状态 snailHide 完整播放完一帧,并且 hide = true 的时候,进入 snailHideIdle 状态
阅读全文
摘要:动画相关 切割图片 将蜗牛的图片切割成动画 动画状态机 这里将蜗牛的移动分为 PreMove 和 Move 两个状态,希望在 PreMove 也就是蜗牛头还没有伸出去的时候不移动,等蜗牛头伸出去之后才移动 当 walk 为 true 的时候,从 snailIdle 立马进入 snailPreMove
阅读全文
摘要:添加野猪追逐状态 using System.Collections; using System.Collections.Generic; using UnityEngine; public class BoarChaseState : BaseState { public override void
阅读全文
摘要:创建有限状态机基类 实现有限状态机 野猪巡逻状态 继承 BaseState,将原来 Enemy 的 Update 里面的一部分移动到 LogicUpdate 里面 使用有限状态机 定义状态 定义巡逻状态、追逐状态、当前状态 Enable 进入巡逻状态 Disable 退出当前状态 Update 调用
阅读全文
摘要:制作受伤和死亡动画 受伤动画 死亡动画就是在受伤动画基础上,增加 Color.a 从 1 ~ 0 的变化 动画状态机如下 当 hurt 触发的时候,从 Any State 立刻进入 boarHurt,当 boarHurt 播放完一帧之后进入 Exit 当 dead = true 的时候,从 Any
阅读全文
摘要:检测左边和右边是否有地面 老师的代码写的是有问题的,见我扩展的代码 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; public c
阅读全文
摘要:野猪实现移动 添加一个 Enemy 类 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enemy : MonoBehaviour { protected Rigi
阅读全文
摘要:为三段攻击分别添加对应的触发器 用同样的方式给 Attack2 和 Attack3 动画也添加触发器 设置完触发器攻击野猪不掉血 因为野猪身上有两个碰撞体,我们希望 capsule collider 2D 起作用,所以需要将 Capsule Collider 2D 的 Layer Override
阅读全文
摘要:创建动画片段 修改动画状态机 增加 Attack Layer,把刚才制作好的动画片段加进去 再增加两个变量,bool 类型的 isAttack 和 trigger 类型的 attack New State -> blueAttack1,isAttack = true 并且 attack 触发 blu
阅读全文
摘要:添加受伤和死亡动画片段 通过新的层来实现受伤和死亡动画 点击动画控制器右上角的 +,然后新建一个 Layer 注意 Weight 要改成 1,Blending 要改成 Additive 受伤的话,我们通过 hurt 来触发,死亡我们通过 isDead 来控制 在 Hurt Layer 中,当 hur
阅读全文
摘要:场景中添加一只野猪 将素材中的野猪图片进行切割,然后给野猪绑定刚体和碰撞体 注意需要两个碰撞体 第一个碰撞体在脚底,避免野猪掉下去,为了避免这个碰撞体和其它敌人以及玩家产生碰撞,需要排除 Player 和 Enemy 层,这样这个碰撞体就只会和平台产生碰撞,避免野猪掉下去 第二个碰撞体表示野猪的攻击
阅读全文
摘要:动画片段 做成动画片段,命名为 blueCrouchStart 和 blueCrouchIdle 动画状态机 这里我们再接触一个新的东西,Sub-State Machine,可以通过右键 Create Sub-State Machine 来实现 点开 Crouch ,把之前创建好的 blueCrou
阅读全文
摘要:人物跳跃的五个阶段 根据这张图把图片切好,并做好动画状态 使用 BlendTree 实现跳跃动画 在动画状态机中新建一个 BlendTree,然后给它添加三个 Motion 因为我设置的 JumpForce 是 5,所以人物速度54时候是起跳阶段,41的时候是上升阶段,1~-1的时候是空中换腿阶段,
阅读全文
摘要:目标 按住键盘上的 左shift 键,或者手柄上的 左肩键 后,人物行动速度变为原来的 1/5,这样就能够强制走路了 配置 inputControl 实现相关代码 private void Awake() { // 获取 Player 上面的刚体组件 rb = GetComponent<Rigidb
阅读全文
摘要:给帧图片命名 添加动画 首先需要给 Player 添加 Animator 组件 然后创建 Animations/Player 文件夹,并在该文件夹下面添加 Animator Controller,起名叫 Player 然后把 Player 拖到 Animator 的 Controller 上面 打开
阅读全文
摘要:物理环境监测代码 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PhysicsCheck : MonoBehaviour { [Header("监测参数")] p
阅读全文
摘要:InputAction 添加跳跃键 代码实现 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; usi
阅读全文
摘要:代码实现 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.Scripting.APIUpda
阅读全文
摘要:创建脚本 文件夹路径 新建 PlayerController 脚本 升级新的输入系统 Api Compatibility Level 改为 .NET Framework,这样可以利用更多的 C# 特性 Active Input Handling 改为 Input System Package (Ne
阅读全文
摘要:添加刚体 在 Rigidbody 2D 上面有 Gravity Scale,这表示人物收到的重力比例是1。重力参数可以通过 Project Settings -> Physics 2D,找到 Gravity 的系数。此外物理更新的 Fixed Update 函数会进入,就是因为 Simulation
阅读全文
摘要:有规则瓦片 在 Tiles 目录下新建 Rule Tiles 然后新建有规则瓦片 接着我们增加规则,把左上角的图片放上去,它的上面和左面没有图片,下面和右面有图片 接着再增加一张上方的图片,它的上面没有图片,左面、下面、右面有图片,图片是三张上方图片其中的一张 就按照这个规则添加图片,绘制完毕之后,
阅读全文
摘要:将素材中的 Forest-1 进行切割 sprite mode 改为 Multiple pixel per unit 改为 16 Filter Mode 改为 Point (no filter) Compression 改为 None 切割图片的时候,按大小 16 x 16 进行切割,pivot 改
阅读全文
摘要:工程结构一览 Scenes:里面是场景 Settings:里面有 URP 通用渲染的设置 Gizmos 也可以关闭或者调整大小 素材来源 原素材作者主页: 人物:链接 场景:链接 整理后的素材下载:夸克 | 迅雷 导入素材 下载整理后的素材,并把它放到 Assets 目录下面 一些有用的设置 在 P
阅读全文
摘要:下载并安装 Unity 访问网站unity.cn,在右边点击下载 Unity。如果没有 Unity 账号,先注册账号,然后登陆账号。 首先下载 Unity Hub,安装 Unity Hub,获取个人免费许可,再安装编辑器 代码编辑器 有 Visual Studio、Visual Studio Cod
阅读全文
摘要:老师构造的场景 修改材质的 Shader,让材质可以绘制出不同的颜色 Navigation 烘焙 在 Unity 2022 中,Navigation 烘焙好像被废弃了,这块我就不学了 后面的课程需要用鼠标点击自动寻路,那没办法了,此系列完结,我还是从勇士传说项目开始学起来好了 项目相关代码 代码仓库
阅读全文
摘要:安装并使用 Polybrush 在 Package Manager 中搜索 Polybrush,然后安装 Polybrush,安装好之后再导入 Shader Examples (Universal RP) 将 Polybrush 文件夹放到 Addons 文件夹 打开 Polybrush Windo
阅读全文
摘要:本课目的 往场景中添加更多素材,让场景更好看一点 隐藏天空盒 将图中的 Skybox 取消勾选就能隐藏天空盒 默认的天空盒并不好看,所以我们把它隐藏掉 好看的天空盒 天空盒 使用上面链接中的天空盒,把它安装到我们的项目中。注意选择素材的时候,必须要支持 URP 通用渲染管线 安装好天空盒之后,我们就
阅读全文
摘要:使用版本 我因为需要开发微信小游戏,所以使用的是 2022.3.8f1c1 版本 创建项目 首先创建一个 3D 项目,因为后续我们需要学习如何将一个普通的项目升级为 URP通用渲染管线 安装 URP 通用渲染管线 在 Package Manager 中搜索 Universal,然后安装 Univer
阅读全文
摘要:我做了一个微信小游戏,并发布上去审核了,但是审核需要20个工作日,我暂时无事可做,所以在 unity 中国上面买了 M-Studio 的课程,准备多学习一下别人是怎么做游戏的。 以后我学习将按照这样的顺序进行,第一遍跟着老师的步骤一模一样做一遍,第二遍再把视频的关键点记录下来并发布成博客。 我希望我
阅读全文