03. 设计地图配置表
1.02. 创建房间的 Prefab
2.03. 设计地图配置表
3.04. 生成地图上的房间4.07. 泛型事件框架5.08. 场景加载6.09. 保存地图场景7.10. 房间进出逻辑8.11. 制作卡牌 Prefab9.12. 创建卡牌数据类10.13. 对象池11.14. 制作卡牌库实现抽卡12.15. 创建卡牌布局13.16. 抽卡动画14.17. 实现卡牌扇形布局15.18. 实现鼠标事件16.19. 卡牌拖拽17.20. 攻击牌的拖拽指针18.21. 实现洗牌逻辑19.22. 导入Spine人物素材20.23. 人物基类代码21.24. 执行卡牌效果22.25. 制作血条的 UI Document23.26. 绑定血条数据24.27. 创建USS血条样式25.28. 制作 Gameplay Panel26.29. 绑定 Gameplay Panel 数据27.30. 回合转换28.31. 出牌能量判断29.32. 防御牌及 UI30.33. 回血的苹果牌及特效31.34. 增加力量牌及 UI32.35. 更多卡牌33.36. 人物动画34.37. 敌人意图 AI 逻辑35.38. 敌人的动画执行逻辑36.39. 对战胜负逻辑37.40. 制作胜利和抽卡面板38.41. 抽卡面板的实际逻辑39.42. GameOver 及 Menu 面板40.43. 实现休息房间的逻辑41.44. Boss 制作和整体流程42.45. 淡入淡出及打包游戏更新 Hierarchy
从 Hierarchy 中删除了 RoomPrefab,然后增加了 Map Generator,并在 Map Generator 上面挂载了 MapGenerator 脚本
MapGenerator 脚本
这个脚本的作用是配置地图上的房间信息(每一列有 min ~ max 个房间,这些房间可以是什么类型),然后在 Awake 的时候获取当前屏幕的高度和宽度,算出每一列的宽度,在 CreateMap 方法里将房间绘制上去
using UnityEngine;
public class MapGenerator : MonoBehaviour
{
public MapConfigSO mapConfig;
public Room roomPrefab;
private float screenHeight;
private float screenWidth;
private float columnWidth;
private Vector3 generatePoint;
private void Awake()
{
// 获取屏幕的高度和宽度
screenHeight = Camera.main.orthographicSize * 2;
screenWidth = screenHeight * Camera.main.aspect;
// 获取一列的宽度,为了防止最后一列显示在屏幕外面,所以分母加1
columnWidth = screenWidth / (mapConfig.roomBlueprints.Count + 1);
}
public void CreateMap()
{
for (int colume = 0; colume < mapConfig.roomBlueprints.Count; colume++)
{
var blueprint = mapConfig.roomBlueprints[colume];
var amount = Random.Range(blueprint.min, blueprint.max + 1);
for (int i = 0; i < amount; i++)
{
var room = Instantiate(roomPrefab, transform);
}
}
}
}
MapConfigSO
这是一个 ScriptableObject,它的作用是规定每一列上面最少和最多有多少个房间,以及这些房间分别可以是哪些类型
代码如上所示,MapConfigSO 就是整张地图,RoomBlueprint 就是每列的房间信息。这里需要特别注意 RoomType 这个类型,它是一个可以多选的 enum,原因是它上面添加了[Flags]
标签
创建一个 MapConfigSO 到 Game Data/Settings 上
然后配置地图信息,如下图所示
上图表示,地图中一共有 7 列,第0列上面有 2 - 5 个房间(只有小怪),第1列上面有 2 - 5 个房间(有小怪和精英怪),第2列上面有 2 - 5 个房间(有精英怪、商店、休息室),……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?