首页 > 其他分享 >03. 设计地图配置表

03. 设计地图配置表

时间:2024-03-01 21:58:00浏览次数:27  
标签:03 配置 mapConfig 房间 地图 private public colume MapConfigSO

更新 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 个房间(有精英怪、商店、休息室),……

项目相关代码

代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git

标签:20240301_2127

标签:03,配置,mapConfig,房间,地图,private,public,colume,MapConfigSO
From: https://www.cnblogs.com/hellozjf/p/18048034

相关文章

  • 射频信号源-10 GHz丨SC5502A SC5503A
    产品简介:频率范围500MHz到10GHz、低残余相位噪声<10kHz偏移时为-121dBc/Hz,1MHz偏移时为-150dBc/Hz,1GHz载波更多信息请加weixin-pt890111获取SC5503B和SC5502A射频信号源旨在满足苛刻的低相位噪声应用。这是通过采用多重锁相环结构以及YIG振荡器作为其合成器的核心来实现的......
  • 【Spring AOP】SpringAOP配置过程——基于XML&&基于注解 && Spring AOP实现原理
    概念SpringAOP-AspectOrientedProgramming面向切面编程AOP的做法是将通用、与业务无关的功能抽象封装为切面类切面可配置在目标方法的执行前、后运行,真正做到即插即用可以在不修改源码的情况下对程序进行扩展AOP配置过程——基于XML配置0.添加依赖创建配置文件......
  • 2024-03-01 闲话
    两年前的HEOI2022是四月中旬打的,省选前一天坐在机房里面刷ShipMoscow被R-360Neptune打沉的新闻(因为可能敏感所以说了洋文)。晚上Yubai问杨卓凡拉格朗日插值的事情,有一根毫毛没听明白,他都要立刻打断杨卓凡并发问。无独有偶,省选Day2结束之后教练赛前说yspm的紧张都......
  • Python安装与环境配置
    1.浏览器输入官方网站打开2.根据自己的电脑选择合适的版本,进行下载软件安装。3.选择下载好的版本,鼠标右键选择以管理员身份运行4.勾选AddPythontoPATH,点击Customizeinstallation请尽量勾选AddPython3.8toPATH,这样可以将Python命令工具所在目录添加到系统的环境变量中5.......
  • 03按键控制LED
    上回讲到点亮一个LED    这次我们来实现用按键控制led不带中断的方式当然实例来源网络加上自己整合先熟悉流程0.添加一个自己写的驱动库文件    为什么添加笔者想的是一个项目工程希望能适应很多个应用场景需要什么直接在里面调用分装好的函数就行1.如何添加文件......
  • Python安装与环境配置
    一、Python安装下载Python安装包,可以从Python官网(https://www.python.org/)下载Python安装包。根据操作系统选择相应的版本,如Windows、Linux或MacOS等。安装Python,安装过程相对简单,只需按照安装向导的提示进行即可。在安装过程中,可以选择将Python添加到系统环境变量中,这样可以在......
  • Top 500 配置笔记
    因为某种原因需要在服务器上测试Top500。top500官网Top500是一个对计算机性能进行排榜的榜单,而Green500则是一个对计算机能耗进行排榜的榜单,能耗=性能/功耗,Green500可以说是Top500的一个Top500使用Linpack基准测试来测试服务器性能。Linpack的C语言实现HPL-用于分布式内存计......
  • 2024-03-01-Linux高级网络编程(6-原始套接字)
    6.原始套接字6.1TCPUDP回顾数据报式套接字(SOCK_DGRAM)无连接的socket,针对无连接的UDP服务可通过邮件模型来进行对比流式套接字(SOCK_STREAM)面向连接的socket,针对面向连接的TCP服务可通过电话模型来进行对比这两类套接字似乎涵盖了TCP/IP应用的全部TCP......
  • vue项目引入高德地图报错:Map container div not exist (火狐浏览器不加载地图)
    问题描述:谷歌浏览器正常显示地图,火狐浏览器不加载,并且报错:  Mapcontainerdivnotexist错误代码如下:  修改后代码如下:  参考大佬:https://blog.csdn.net/white_777/article/details/128286558  ......
  • $\text{20240301}$ 字符串练习题解
    \(\text{20240301}\)字符串练习题解一定要写冬令营的题吗?遗憾的。P9717给了一个\(n\)个数的首尾相接的字符串,求若干个操作后能形成的不同的字符串大小。一次操作定义为:将字符串内所有的\(\text{01}\)同时改成\(\text{10}\),如图。通过这张图我们似乎发现了一个规律,这......