合集-王国之梦
摘要:目标 实现如下图所示的随机地图 地图会随机连线,并且最后会连到 Boss 的房间,并且确保 Boss 房间前面一定是一个休息的房间 额外需要做的事情 因为点击房间之后涉及场景的切换,根据勇士传说的经验,我们需要使用 Addressable 来切换场景,因此我们需要通过 Package Manager
阅读全文
摘要:更新 Hierarchy 从 Hierarchy 中删除了 RoomPrefab,然后增加了 Map Generator,并在 Map Generator 上面挂载了 MapGenerator 脚本 MapGenerator 脚本 这个脚本的作用是配置地图上的房间信息(每一列有 min ~ max
阅读全文
摘要:最终目标 每一列上面的关卡之间有间距,并且 x 坐标有左右偏移,最后一个房间的位置是固定的 实现方法 我们现在已经知道屏幕的宽度screenWidth,也知道了屏幕的高度screenHeight,同时还知道一共有多少列mapConfig.roomBlueprints.Count 那么可以算出 每一列
阅读全文
摘要:事件监听和发布 我们要实现这样一个功能,当玩家在 Map 场景中点击一个图标的时候,需要发送事件给场景管理器,场景管理器监听事件,然后执行切换场景的操作 在勇士传说中,我们使用 ScriptableObject.UnityAction 发布事件,以及监听事件,那时候每种类型都有一个 Scriptab
阅读全文
摘要:awaitable 关键字 本节涉及到场景的加载和卸载,在勇士传说中,我们使用协程的方式来加载和卸载场景,在本节使用了 unity2023.3 最新的特性 awaitable awaitable 具体是啥,我也不太清楚,见下图 加载场景 在上一节中,我们监听了 LoadRoomEvent 事件,成功
阅读全文
摘要:本节目的 将 Map 上的房间和连线都保存下来,以便从战斗场景回来的时候能够恢复这些数据 实现方法 定义存储结构 定义一个名叫MapLayoutSO的 ScriptableObject,它里面记录了所有的房间和连线信息,如下图所示 房间的信息中不单单有房间的图标、房间的类型、引用的场景,还有房间的状
阅读全文
摘要:目标 当我进入房间,然后出去之后,当前房间设置为已访问,同一列的其它房间设置为不可访问,当前房间相连的房间设置为可访问 实现 点击房间广播 因为 RoomPrefab 上面有碰撞体,所以鼠标或手指点击它的时候会触发OnMouseDown方法,然后就会触发LoadRoomEvent广播事件 监听点击房
阅读全文
摘要:制作 Card 使用 Art / Card 制作卡牌,制作完毕之后需要给 Card 绑定 BoxCollider2D,并放在 Front 这层 让该 Card 可以被选择 给 Main Camera 添加 Physics 2D Raycaster,把它的 Event Mask 改为 Card, Ch
阅读全文
摘要:创建数据类 上一节,我们添加了卡牌的形状,这一节,我们来添加卡牌的数据,使用 ScriptableObject 来添加卡牌的数据 如上图所示,我们在 Scripts/Card/ScriptableObject 下面创建了 CardDataSO 文件,它里面有卡牌名字、卡牌图片、卡牌费用、卡牌类型、描
阅读全文
摘要:创建对象池 我们后面会创建出很多的卡牌,如果每张卡牌都需要 Instantiate 和 Destroy 的话,就会非常消耗性能。因此我们使用对象池来管理这些对象,使它们的分配和开销减少 具体代码如下 using System.Diagnostics.Tracing; using UnityEngin
阅读全文
摘要:卡牌库 添加卡牌库对象,以及卡牌库代码 using System.Collections.Generic; using UnityEngine; public class CardDeck : MonoBehaviour { public CardManager cardManager; // 抽牌
阅读全文
摘要:在项目中添加 CardLayoutManager 代码如下 using System.Collections.Generic; using UnityEngine; public class CardLayoutManager : MonoBehaviour { public bool isHori
阅读全文
摘要:使用 DoTween 实现抽卡动画 卡牌起始位置和大小 首先卡牌被抽出来的时候,需要从某个位置开始,并且它的大小要为0 让牌一张张进入玩家手里 这段代码,就会在 delay 的时间内,完成所有卡牌缩放和移动的动画 在 SetCardLayout 外面,再使用一个 for 循环设置延迟时间 项目相关代
阅读全文
摘要:解决上节课卡牌可能遮挡的问题 通过角度和半径算出卡牌位置 相关代码 最终效果 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240305_1323
阅读全文
摘要:要实现的功能 当鼠标移动到卡牌上面的时候,卡牌可以显示在最上面 修改代码 这里有个 isAnimating 判断,当卡牌在移动的时候,isAnimating 就为 true,此时不能对其进行操作 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfThe
阅读全文
摘要:给 Card 添加 CardDragHandler 代码如下 using UnityEngine; using UnityEngine.EventSystems; public class CardDragHandler : MonoBehaviour, IBeginDragHandler, IDr
阅读全文
摘要:制作攻击指针 首先创建一个 ArrowLine 的对象,然后给它添加 LineRenderer,将线宽改为 1.5,Materials 改为 RedArrow RedArrow 就长这个样子 鼠标点击攻击牌的时候出现指针 二次贝塞尔曲线理论和实现方式 相关代码 public void SetArro
阅读全文
摘要:洗牌方法 洗牌的时候,会把弃牌堆清除,牌堆中的每张牌都会和随机的牌进行交换 一共有两个地方会进行洗牌操作,第一个是初始化牌堆的时候 第二个是抽牌堆为空的时候 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:2024
阅读全文
摘要:添加 Spine 组件 访问spine-unity官网,下载spine-unity 4.1,然后双击运行导入spine Spine相关素材下载和导入 迅雷网盘 将下载好的压缩包解压,将Character和Effects文件夹拷贝到Art目录下 老师这边使用的素材好像是伽马空间的,因此我们需要调整颜色
阅读全文
摘要:介绍一下 VSCode 快捷键 删除文件内容,然后输入 ScriptableObject 就能快速添加一个 ScriptableObject 模板 删除文件内容,然后输入 Editor 就能快速添加一个 Editor 模板 开始写代码 数据 ScriptableObject 如上图所示,首先是在 S
阅读全文