03 2024 档案

摘要:创建 Player Bag 创建 Slot Holder 给 Slot Holder 添加 Grid Layout Group,Child Alignment 改为 Middle Center 然后再添加上节课的槽位预制体 添加头像和金币 项目相关代码 代码仓库:https://gitee.com/ 阅读全文
posted @ 2024-03-31 10:52 hellozjf 阅读(12) 评论(0) 推荐(0) 编辑
摘要:创建 UI 场景 添加 Action Bar 添加 Slot_Bag 添加 Horizontal Layout Group 添加背包图片 添加一个图片,放到 Action Bar 下面,给它添加 Layout Element 组件,勾选 Ignore Layout,然后调整它的位置 将 Slot_B 阅读全文
posted @ 2024-03-31 09:33 hellozjf 阅读(8) 评论(0) 推荐(0) 编辑
摘要:修改 InventoryManager 检查背包是否有空位 通过物品 ID 找到背包已有物品位置 在指定背包序号位置添加物品 添加物品到 Player 背包里 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:202 阅读全文
posted @ 2024-03-29 07:21 hellozjf 阅读(19) 评论(0) 推荐(0) 编辑
摘要:创建 ItemPickup 脚本 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240329_0638 阅读全文
posted @ 2024-03-29 06:39 hellozjf 阅读(16) 评论(0) 推荐(0) 编辑
摘要:创建 Singleton 创建 InventoryManager 创建 ItemBase 接下来修改碰撞体大小 这样写是因为图片的锚点可能在底部,所以需要修改 coll.offset 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdo 阅读全文
posted @ 2024-03-28 20:46 hellozjf 阅读(12) 评论(0) 推荐(0) 编辑
摘要:首先把原来界面上没有绑定的字段都给完成 private void GetItemDetails() { itemDetailSection.MarkDirtyRepaint(); itemDetailSection.Q<IntegerField>("itemID").value = activeIt 阅读全文
posted @ 2024-03-28 10:06 hellozjf 阅读(19) 评论(0) 推荐(0) 编辑
摘要:本节目标 实现添加和删除按钮的功能 代码实现 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240328_0913 阅读全文
posted @ 2024-03-28 10:06 hellozjf 阅读(13) 评论(0) 推荐(0) 编辑
摘要:点击左侧的东西时同步右侧的内容 修改图片 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240327_2028 阅读全文
posted @ 2024-03-27 20:30 hellozjf 阅读(15) 评论(0) 推荐(0) 编辑
摘要:修改 ItemEditor 加载 ItemDataList_SO 老师在调试的过程中发现,AssetDatabase.FindAssets 里面不需要加t: 加载 ItemDetails 测试 打开 Editor 窗口,然后就能看到有打印输出 查看示例文档 最终要的是实现 makeItem 和 bi 阅读全文
posted @ 2024-03-27 07:36 hellozjf 阅读(19) 评论(0) 推荐(0) 编辑
摘要:上次作业漏了 Row3 另外补充一下,如果想要显示 Dark Editor Theme 的话,就需要开启 Editor Extension Authoring 然后就能开启 Dark Editor Theme 了 创建 ItemRowTemplate 在 Assets / Editor / UI B 阅读全文
posted @ 2024-03-26 20:53 hellozjf 阅读(45) 评论(0) 推荐(0) 编辑
摘要:Editor 在 Assets 目录下创建 Editor 目录,然后在 Editor 目录下创建 UI Builder 然后在 UI Builder 下面右键创建 UI Toolkit Editor,起名叫 ItemEditor 然后就会打开一个 ItemEditor 窗口 这个窗口也可以通过 Wi 阅读全文
posted @ 2024-03-25 20:41 hellozjf 阅读(238) 评论(0) 推荐(0) 编辑
摘要:创建 DataCollection 创建 Enums 种子、商品、家具 锄头(锄地)、砍树工具、砸石头工具、割草工具、浇水工具、菜篮子收割工具 被割的杂草 创建 Inventory 文件夹 创建好 Inventory 文件夹,将 Item 文件夹放到 Inventory 文件夹下面,然后再创建 Da 阅读全文
posted @ 2024-03-24 07:15 hellozjf 阅读(15) 评论(0) 推荐(0) 编辑
摘要:本节目标 当人物从树叶走过去的时候,树叶可以变成半透明 当人物穿过树干的时候,要能被阻挡 给树干添加碰撞体 可以添加圆形碰撞体 也可以添加盒子碰撞体 记得给 Tree Pink 和 Tree Yellow 的树干也增加盒子碰撞体 给树叶和树干添加触发器 用同样的方法,给三颗树都添加触发器 安装 DO 阅读全文
posted @ 2024-03-23 07:29 hellozjf 阅读(30) 评论(0) 推荐(0) 编辑
摘要:添加 Cinemachine Confiner 找到 cinemachine,在 Add Extension 这里找到 CinemachineConfiner(不论2D还是3D,都是使用 Confiner),并进行添加 CinemachineConfiner 需要一个碰撞体,所以我们在 01.Fie 阅读全文
posted @ 2024-03-22 07:11 hellozjf 阅读(185) 评论(0) 推荐(0) 编辑
摘要:安装美观插件 绘制地图 增加碰撞层 添加组件 然后再增加 Composite Collider 2D,在自动增加的 Rigidbody 2D 里将 Body Type 改为 Static 在 Tilemap Collider 2D 上勾选 Used By Composite 绘制碰撞 关闭图片渲染 阅读全文
posted @ 2024-03-21 19:47 hellozjf 阅读(33) 评论(0) 推荐(0) 编辑
摘要:安装 cinemachine 解决画面中的间隙问题 解决办法,通过创建 Sprite Atlas 如何打图集呢? 然后再点击 Pack Preview 如果需要将更多的图片素材添加进去,比方说 Buildings,那么就将它也拖动进 Objects for Packing 如果发现图片旁边有别的图片 阅读全文
posted @ 2024-03-20 20:08 hellozjf 阅读(23) 评论(0) 推荐(0) 编辑
摘要:将第二个地图的瓦片导入tilemap中 绘制反角 创建规则瓦片 一个个手画太慢了,我们可以创建规则瓦片来进行绘画 给图片进行命名 将 Rule Tiles 放到 Tilemap 上 中间的图片可以是随机的图片 关于图层 最底下的是 bottom,可以用来画泥土 最底下上面一层是 middle,可以用 阅读全文
posted @ 2024-03-20 07:16 hellozjf 阅读(81) 评论(0) 推荐(0) 编辑
摘要:创建 Tilemap 请注意将每个 Tilemap 调整到它对应的 Sorting Layer 此外我们还需要标记一下哪些地方可以挖土、丢东西、放家具、有NPC。把它们都放到 Collision 这层。加好之后记得将它们 disable 掉,平时是不用开启的 使用多场景切换场景 我们希望一个场景是永 阅读全文
posted @ 2024-03-19 07:42 hellozjf 阅读(25) 评论(0) 推荐(0) 编辑
摘要:给 Player 添加碰撞体 需要给人物添加刚体,刚体的大小只要脚底一小部分就行了,因为如果给全身绑定碰撞体的话,那么人的头经过树的时候也会被卡住 给 Player 添加 Rigidbody2D 因为我们是俯视角游戏,所以需要将重力系数改为0 给 Player 添加 Player 脚本 Player 阅读全文
posted @ 2024-03-19 07:42 hellozjf 阅读(20) 评论(0) 推荐(0) 编辑
摘要:操作 在 Hierarchy 窗口创建 Player,它下面会绑定身体的其它部分:Body、Hair、Arm、Shadow Body 下图是 Body 对象的一些组件参考 Hair Arm Shadow 增加 Sorting Group 首先是添加 Sorting Layers 将四个对象统一添加到 阅读全文
posted @ 2024-03-17 07:18 hellozjf 阅读(28) 评论(0) 推荐(0) 编辑
摘要:购买素材 地址 购买好之后将素材导入到自己的项目中 素材说明 空的人物动作 以20结尾的图片表示它们的pixel per unit是20,其它图片表示需要自动切割 素材切割 Max Size 可以改成 1024,因为图片是 640 x 460 将图片设置改为预设 保存到 Art 同级目录下 之后,其 阅读全文
posted @ 2024-03-16 20:35 hellozjf 阅读(59) 评论(0) 推荐(0) 编辑
摘要:版本和模板选择 老师的版本选择了 unity 2021.2.10f1c1,模板选择了 2D 核心模板,后期会升级到 2D URP 包管理 打开 Package Manager,移除 JetBrains Rider Editor、Version Control、Visual Scripting,更新 阅读全文
posted @ 2024-03-16 19:34 hellozjf 阅读(11) 评论(0) 推荐(0) 编辑
摘要:本节目标 实现场景切换时的淡入淡出效果,实现开场动画,实现打包 实现 实现淡入淡出效果 首先在 Persistent 场景下面添加一个 FadePanel 对象,然后给它添加 UI 和脚本 UI 非常简单,就是一张全黑的图片,注意需要把 Picking Mode 改为 Ignore,否则其它UI组件 阅读全文
posted @ 2024-03-13 20:22 hellozjf 阅读(89) 评论(0) 推荐(0) 编辑
摘要:本节目标 给精英敌人场景添加精英,给Boss场景添加Boss 实现方法 精英敌人场景添加精英 将普通敌人拷贝一份复制到精英场景,把 Spine 动画拖过去,拖过去记得选 SkeletonMecaim,还要修改一下图层,让它来到 default 层 然后编辑 EliteEnemy_Controller 阅读全文
posted @ 2024-03-13 15:01 hellozjf 阅读(58) 评论(0) 推荐(0) 编辑
摘要:本节目标 实现休息房间可以回一次血,实现宝箱房间可以获得卡牌 实现办法 休息房间回血 添加一个 RestRoomPanel,给它挂上 UI 和 脚本 代码实现如下 using System; using UnityEngine; using UnityEngine.UIElements; publi 阅读全文
posted @ 2024-03-13 13:06 hellozjf 阅读(20) 评论(0) 推荐(0) 编辑
摘要:本节目标 实现 GameOver 面板,并且在点击返回菜单之后进入 Menu 场景,点击 Menu 场景中的 New Game 进入游戏 开始实现 GameOver 面板 记得给 BackToStartButton 添加 turnbutton 样式 添加 GameOver 对象 当点击 醒来 按钮的 阅读全文
posted @ 2024-03-13 09:58 hellozjf 阅读(50) 评论(0) 推荐(0) 编辑
摘要:本节目标 打开抽卡面板之后,显示三张可以抽取的卡牌,点击选择卡牌之后将卡牌添加到牌堆中,然后游戏胜利面板隐藏抽卡按钮 实现方法 添加卡牌的 UI Document 需要给 Card 也添加turnbutton样式,这样鼠标移动过去的时候会有放大的效果 抽卡面板调试布局 调试的时候,我们可以把 Pro 阅读全文
posted @ 2024-03-12 21:19 hellozjf 阅读(48) 评论(0) 推荐(0) 编辑
摘要:本节目标 绘制出游戏胜利的面板,以及抽卡面板。当游戏胜利的时候弹出游戏胜利面板,然后游戏胜利面板上面有个抽卡按钮,点击抽卡按钮之后进入抽卡面板 实现 绘制面板 首先在 UI 文件夹下面添加两个 UI Document 文件 第一个是 GameWinPanel,注意需要给按钮添加样式,以便它有放大的效 阅读全文
posted @ 2024-03-12 13:30 hellozjf 阅读(123) 评论(0) 推荐(0) 编辑
摘要:本节目标 让用户从地图场景进入对战场景,然后对战胜利或失败之后收起卡牌 实现过程 让用户从地图场景进入对战场景 Persistent 场景隐藏 Player 和 Gameplay Panel Hierarchy 窗口中移除对战场景,添加map场景 清除 MapLayoutSO 中的数据 然后启动游戏 阅读全文
posted @ 2024-03-12 09:34 hellozjf 阅读(43) 评论(0) 推荐(0) 编辑
摘要:本节目标 上节只是把逻辑写好了,为了让游戏看起来更好看,我们需要将敌人的动画也加上去 实现 动画状态机 敌人的状态比较简单,只有站立、加Buff、攻击、受伤、死亡这五种状态 各状态之间的转换关系如下 站立 -> 加 Buff 通过 skill 触发,立刻执行 因为是从 Any State 出来的,所 阅读全文
posted @ 2024-03-11 13:28 hellozjf 阅读(40) 评论(0) 推荐(0) 编辑
摘要:本节目标 在玩家回合,需要显示敌人的意图,然后在敌人回合执行意图 代码实现 拼 UI 在 HealthBar 上面添加意图的图片和文字 然后在 HealthBarController 上面添加意图图片和意图文字 添加敌人意图 敌人意图 ScriptableObject 敌人意图实例 Effect 把 阅读全文
posted @ 2024-03-11 09:24 hellozjf 阅读(44) 评论(0) 推荐(0) 编辑
摘要:人物动画状态机 设置变量 isParry 是否在防御 isSleep 是否正在睡觉 isDead 是否已经死亡 attack 攻击 hit 受伤 skill 技能 状态 stand 站立 parry_stand 防御 hurt 受伤 attack_pillow 攻击 sleep 睡眠 wake 醒来 阅读全文
posted @ 2024-03-09 14:11 hellozjf 阅读(56) 评论(0) 推荐(0) 编辑
摘要:实现做梦牌(减敌攻击) 复用原来的 StrengthEffect,实现 DeBuffStrengthEffect 注意要对敌人产生效果 创建做梦牌 实现翻书牌(抽牌) 创建 DrawCardEffect using UnityEngine; [CreateAssetMenu(fileName = " 阅读全文
posted @ 2024-03-07 19:35 hellozjf 阅读(33) 评论(0) 推荐(0) 编辑
摘要:本节目标 实现一张力量牌,使用了它之后玩家两个回合的输出增加50% 代码实现 增加 StrengthEffect 力量效果如果是对自己使用的话,就会提高攻击。如果是对敌人使用的话,就会降低攻击 增加 EnemyStrengthRound 增加 BuffStrengthEffect 力量拳套使用 Bu 阅读全文
posted @ 2024-03-07 18:32 hellozjf 阅读(22) 评论(0) 推荐(0) 编辑
摘要:本节目标 玩家使用苹果牌之后会回血,并播放回血特效 代码实现 回血效果 需要给 CharacterBase 添加一个回血方法 实例化回血效果 苹果牌 在初始卡组中添加三张苹果牌 回血特效 给玩家和敌人身上挂上 VFX 脚本 需要在 VFX 下面添加两个特效,特效来自 Art/Effects/Buff 阅读全文
posted @ 2024-03-07 13:14 hellozjf 阅读(34) 评论(0) 推荐(0) 编辑
摘要:本节目标 当玩家打出防御牌之后,会产生一个护盾,用于抵消伤害。在一个回合内护盾是可以叠加的。当新回合开始的时候护盾消失。 代码实现 护盾变量 首先要在CharacterBase中添加一个护盾值 增加护盾的时候会提高它的数值 回合开始的时候会清空护盾值 角色受伤时,首先扣除护盾再减去血量 需要在 Va 阅读全文
posted @ 2024-03-07 10:54 hellozjf 阅读(33) 评论(0) 推荐(0) 编辑
摘要:本节目标 当玩家出牌的时候会扣除能量,当能量不够的时候不能出牌。每个玩家回合开始的时候恢复能量。 代码实现 玩家身上的能量 首先创建一个IntVariable来表示玩家当前的能量,其中该值发生变化的时候会产生PlayerManaChangedEvent事件 然后再写代码,使用这个IntVariabl 阅读全文
posted @ 2024-03-07 09:50 hellozjf 阅读(51) 评论(0) 推荐(0) 编辑
摘要:本节目标 当我点击右下角回合切换按钮的时候,会从我的回合切换到敌人回合,然后敌人回合经过几秒后回到我的回合 代码实现 TurnBaseManager 广播 playerTurnBegin 事件 首先我们需要一个TurnBaseManager类,用于管理当前是哪个回合 using UnityEngin 阅读全文
posted @ 2024-03-06 20:47 hellozjf 阅读(32) 评论(0) 推荐(0) 编辑
摘要:本节目标 当玩家抽卡、弃卡的时候,抽牌堆和弃牌堆的数量要与实际的保持一致 实现方法 添加抽牌堆数量和弃牌堆数量变更事件 抽牌弃牌的时候发布事件 绑定广播事件 GameplayPanel 接收事件 首先 GameplayPanel 需要在OnEnable的时候,绑定相关的 UI 元素 当事件到来的时候 阅读全文
posted @ 2024-03-06 15:30 hellozjf 阅读(30) 评论(0) 推荐(0) 编辑
摘要:本节目标 实现以下 UI 功能实现 创建 GameplayPanel 在 UI 目录下创建一个 GameplayPanel,编辑 GameplayPanel,增加 Visual Element、Label、Button 注意,需要将它们的 Attributes -> Picking Mode 都修改 阅读全文
posted @ 2024-03-06 14:33 hellozjf 阅读(28) 评论(0) 推荐(0) 编辑
摘要:创建 HealthBarUSS 内容如下所示 这个 CSS 选择器是什么意思呢? .unity-progress-bar__container、.unity-progress-bar__background、.unity-progress-bar__progress分别会修改上面三张图里面的样式 在 阅读全文
posted @ 2024-03-06 12:01 hellozjf 阅读(49) 评论(0) 推荐(0) 编辑
摘要:查看 HealthBar 如果我们想根据当前的血量和最大血量,修改血条的值以及是否显示,那么我们可以修改上图中画红框的部分 代码实现 Awake 的时候调用InitHealthBar方法,在InitHealthBar的方法中修改highValue值 然后在Update方法中不停修改healthBar 阅读全文
posted @ 2024-03-06 11:08 hellozjf 阅读(29) 评论(0) 推荐(0) 编辑
摘要:UI Toolkit 本项目使用 UI Toolkit 进行 HealthBar 通过 Create -> UI Toolkit -> UI Document 创建一个 HealthBar 在 HealthBar 里面,我们可以添加一个 Progress Bar 用于表示血条,然后将 Progres 阅读全文
posted @ 2024-03-05 23:33 hellozjf 阅读(75) 评论(0) 推荐(0) 编辑
摘要:目标 当我打出一张攻击牌并指向敌人的时候,敌人会扣血 代码 攻击牌指向敌人 当我在拖动牌指向敌人的时候,鼠标指向的地方会判断是否有东西,并且东西的标签是否是 Enemy,是的话就标记为可执行,以及目标角色 因为只有指向 Tag 为 Enemy 的对象才有效果,所以要给敌人添加名为 Enemy 的 T 阅读全文
posted @ 2024-03-05 21:48 hellozjf 阅读(47) 评论(0) 推荐(0) 编辑
摘要:介绍一下 VSCode 快捷键 删除文件内容,然后输入 ScriptableObject 就能快速添加一个 ScriptableObject 模板 删除文件内容,然后输入 Editor 就能快速添加一个 Editor 模板 开始写代码 数据 ScriptableObject 如上图所示,首先是在 S 阅读全文
posted @ 2024-03-05 20:35 hellozjf 阅读(56) 评论(0) 推荐(0) 编辑
摘要:添加 Spine 组件 访问spine-unity官网,下载spine-unity 4.1,然后双击运行导入spine Spine相关素材下载和导入 迅雷网盘 将下载好的压缩包解压,将Character和Effects文件夹拷贝到Art目录下 老师这边使用的素材好像是伽马空间的,因此我们需要调整颜色 阅读全文
posted @ 2024-03-05 20:35 hellozjf 阅读(131) 评论(0) 推荐(0) 编辑
摘要:洗牌方法 洗牌的时候,会把弃牌堆清除,牌堆中的每张牌都会和随机的牌进行交换 一共有两个地方会进行洗牌操作,第一个是初始化牌堆的时候 第二个是抽牌堆为空的时候 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:2024 阅读全文
posted @ 2024-03-05 19:11 hellozjf 阅读(60) 评论(0) 推荐(0) 编辑
摘要:制作攻击指针 首先创建一个 ArrowLine 的对象,然后给它添加 LineRenderer,将线宽改为 1.5,Materials 改为 RedArrow RedArrow 就长这个样子 鼠标点击攻击牌的时候出现指针 二次贝塞尔曲线理论和实现方式 相关代码 public void SetArro 阅读全文
posted @ 2024-03-05 15:39 hellozjf 阅读(126) 评论(0) 推荐(0) 编辑
摘要:给 Card 添加 CardDragHandler 代码如下 using UnityEngine; using UnityEngine.EventSystems; public class CardDragHandler : MonoBehaviour, IBeginDragHandler, IDr 阅读全文
posted @ 2024-03-05 15:39 hellozjf 阅读(76) 评论(0) 推荐(0) 编辑
摘要:要实现的功能 当鼠标移动到卡牌上面的时候,卡牌可以显示在最上面 修改代码 这里有个 isAnimating 判断,当卡牌在移动的时候,isAnimating 就为 true,此时不能对其进行操作 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfThe 阅读全文
posted @ 2024-03-05 14:33 hellozjf 阅读(53) 评论(0) 推荐(0) 编辑
摘要:解决上节课卡牌可能遮挡的问题 通过角度和半径算出卡牌位置 相关代码 最终效果 项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240305_1323 阅读全文
posted @ 2024-03-05 14:09 hellozjf 阅读(98) 评论(0) 推荐(0) 编辑
摘要:使用 DoTween 实现抽卡动画 卡牌起始位置和大小 首先卡牌被抽出来的时候,需要从某个位置开始,并且它的大小要为0 让牌一张张进入玩家手里 这段代码,就会在 delay 的时间内,完成所有卡牌缩放和移动的动画 在 SetCardLayout 外面,再使用一个 for 循环设置延迟时间 项目相关代 阅读全文
posted @ 2024-03-05 13:09 hellozjf 阅读(153) 评论(0) 推荐(0) 编辑
摘要:在项目中添加 CardLayoutManager 代码如下 using System.Collections.Generic; using UnityEngine; public class CardLayoutManager : MonoBehaviour { public bool isHori 阅读全文
posted @ 2024-03-05 12:33 hellozjf 阅读(105) 评论(0) 推荐(0) 编辑
摘要:卡牌库 添加卡牌库对象,以及卡牌库代码 using System.Collections.Generic; using UnityEngine; public class CardDeck : MonoBehaviour { public CardManager cardManager; // 抽牌 阅读全文
posted @ 2024-03-05 11:14 hellozjf 阅读(97) 评论(0) 推荐(0) 编辑
摘要:创建对象池 我们后面会创建出很多的卡牌,如果每张卡牌都需要 Instantiate 和 Destroy 的话,就会非常消耗性能。因此我们使用对象池来管理这些对象,使它们的分配和开销减少 具体代码如下 using System.Diagnostics.Tracing; using UnityEngin 阅读全文
posted @ 2024-03-04 14:41 hellozjf 阅读(80) 评论(0) 推荐(0) 编辑
摘要:创建数据类 上一节,我们添加了卡牌的形状,这一节,我们来添加卡牌的数据,使用 ScriptableObject 来添加卡牌的数据 如上图所示,我们在 Scripts/Card/ScriptableObject 下面创建了 CardDataSO 文件,它里面有卡牌名字、卡牌图片、卡牌费用、卡牌类型、描 阅读全文
posted @ 2024-03-04 13:59 hellozjf 阅读(96) 评论(0) 推荐(0) 编辑
摘要:制作 Card 使用 Art / Card 制作卡牌,制作完毕之后需要给 Card 绑定 BoxCollider2D,并放在 Front 这层 让该 Card 可以被选择 给 Main Camera 添加 Physics 2D Raycaster,把它的 Event Mask 改为 Card, Ch 阅读全文
posted @ 2024-03-03 13:48 hellozjf 阅读(97) 评论(0) 推荐(0) 编辑
摘要:目标 当我进入房间,然后出去之后,当前房间设置为已访问,同一列的其它房间设置为不可访问,当前房间相连的房间设置为可访问 实现 点击房间广播 因为 RoomPrefab 上面有碰撞体,所以鼠标或手指点击它的时候会触发OnMouseDown方法,然后就会触发LoadRoomEvent广播事件 监听点击房 阅读全文
posted @ 2024-03-02 23:20 hellozjf 阅读(69) 评论(0) 推荐(0) 编辑
摘要:本节目的 将 Map 上的房间和连线都保存下来,以便从战斗场景回来的时候能够恢复这些数据 实现方法 定义存储结构 定义一个名叫MapLayoutSO的 ScriptableObject,它里面记录了所有的房间和连线信息,如下图所示 房间的信息中不单单有房间的图标、房间的类型、引用的场景,还有房间的状 阅读全文
posted @ 2024-03-02 23:20 hellozjf 阅读(68) 评论(0) 推荐(0) 编辑
摘要:awaitable 关键字 本节涉及到场景的加载和卸载,在勇士传说中,我们使用协程的方式来加载和卸载场景,在本节使用了 unity2023.3 最新的特性 awaitable awaitable 具体是啥,我也不太清楚,见下图 加载场景 在上一节中,我们监听了 LoadRoomEvent 事件,成功 阅读全文
posted @ 2024-03-02 23:19 hellozjf 阅读(96) 评论(0) 推荐(0) 编辑
摘要:事件监听和发布 我们要实现这样一个功能,当玩家在 Map 场景中点击一个图标的时候,需要发送事件给场景管理器,场景管理器监听事件,然后执行切换场景的操作 在勇士传说中,我们使用 ScriptableObject.UnityAction 发布事件,以及监听事件,那时候每种类型都有一个 Scriptab 阅读全文
posted @ 2024-03-02 23:19 hellozjf 阅读(153) 评论(0) 推荐(0) 编辑
摘要:最终效果 每列根据自己的定义,创建出对应的房间图片 实现方法 补全所有的 Room Data 将它们添加到 Map Generator 上面 然后我们需要根据 MapConfigSO 上面 RoomType 的定义,随机取出一个对应的 RoomData 获取到 RoomType 之后,就能根据 Ro 阅读全文
posted @ 2024-03-02 23:18 hellozjf 阅读(57) 评论(0) 推荐(0) 编辑
摘要:画线使用了 LineRenderer 如上图所示,LineRenderer 里面有两个点,分别是 index0 和 index1,然后它还有线宽,我在我的屏幕上试了一下,0.05 是一个粗细比较合适的线 目前线是洋红色的,我们需要添加材质,才能让其有颜色。这边我们创建了一个材质 这个材质使用了透明的 阅读全文
posted @ 2024-03-02 23:18 hellozjf 阅读(47) 评论(0) 推荐(0) 编辑
摘要:最终目标 每一列上面的关卡之间有间距,并且 x 坐标有左右偏移,最后一个房间的位置是固定的 实现方法 我们现在已经知道屏幕的宽度screenWidth,也知道了屏幕的高度screenHeight,同时还知道一共有多少列mapConfig.roomBlueprints.Count 那么可以算出 每一列 阅读全文
posted @ 2024-03-01 22:51 hellozjf 阅读(115) 评论(0) 推荐(0) 编辑
摘要:更新 Hierarchy 从 Hierarchy 中删除了 RoomPrefab,然后增加了 Map Generator,并在 Map Generator 上面挂载了 MapGenerator 脚本 MapGenerator 脚本 这个脚本的作用是配置地图上的房间信息(每一列有 min ~ max 阅读全文
posted @ 2024-03-01 21:42 hellozjf 阅读(153) 评论(0) 推荐(0) 编辑
摘要:目标 实现如下图所示的随机地图 地图会随机连线,并且最后会连到 Boss 的房间,并且确保 Boss 房间前面一定是一个休息的房间 额外需要做的事情 因为点击房间之后涉及场景的切换,根据勇士传说的经验,我们需要使用 Addressable 来切换场景,因此我们需要通过 Package Manager 阅读全文
posted @ 2024-03-01 21:42 hellozjf 阅读(367) 评论(2) 推荐(0) 编辑
摘要:创建项目 注意,需要使用 unity 2023.3 及以上的版本,使用 2D URP 模板,项目名字叫做 DreamOfTheKingdom 修改项目配置 打开 Preferences -> Scene View,勾选 Create Objects at Origin 修改 Package Mana 阅读全文
posted @ 2024-03-01 21:41 hellozjf 阅读(71) 评论(0) 推荐(0) 编辑
摘要:为什么要更改 有两个原因 第一,Visual Studio 默认使用 GBK 编码,写的中文文字在 Unity 预览界面显示是乱码的 第二,我正在学习王国之梦,看到老师的 VSCode 使用 Code GeeX 这个 AI 可以快速生成代码,非常羡慕。但是我不知道 Visual Studio 如何快 阅读全文
posted @ 2024-03-01 21:16 hellozjf 阅读(1577) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示