您当前的位置: 首页 > 

CloudHu1989

暂无认证

  • 3浏览

    0关注

    89博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

用ECS做HexMap:高地与阶梯

CloudHu1989 发布时间:2019-08-29 11:56:13 ,浏览量:3

基于Unity2019最新ECS架构开发MMO游戏笔记22
    • 准备工作
    • 高地与阶梯连接
      • 桥面倾斜连接
      • 阶梯状的桥连接
      • 阶梯合理化
      • 制作三角补丁
      • ECS专题目录
      • ECS更新计划
      • 作者的话

最终效果图

准备工作

如果大佬对ECS版的海克斯无限地图感兴趣,不妨参与进来,欢迎Star/Folk源码 0下载Unity编辑器(2019.1.12f1 or 更新的版本),if(已经下载了)continue; 1克隆:git clone https://github.com/cloudhu/HexMapMadeInUnity2019ECS.git --recurse 或下载Zip压缩包 2如果下载的是压缩包,需要先将压缩包解压。然后将HexMapMadeInUnity2019ECS添加到Unity Hub项目中; 3用Unity Hub打开的开源项目:HexMapMadeInUnity2019ECS,等待Unity进行编译工作; 4打开项目后,启动场景在Scenes目录下,打开AdvancedHexMap场景(优化重构的版本)。

高地与阶梯连接

今天的计算非常复杂,不过还是尽量表述清楚,要创建高地就需要新增数据字段来保存高地的海拔参数。打开Data脚本:

    +++在UpdateData中新增
    /// 
    /// 海拔
    /// 
    public int Elevation;
    +++++在Cell中新增
    /// 
    /// 当前单元的海拔
    /// 
    public int Elevation;
    //六个方向相邻单元的海拔
    public int NEElevation;
    public int EElevation;
    public int SEElevation;
    public int SWElevation;
    public int WElevation;
    public int NWElevation;

这样我们需要使用的海拔数据字段都有了,我们可以先随机生成一些海拔数据给六边形单元,看看效果。打开CellSpawnSystem脚本,添加一个数组来保存随机生成的海拔,然后把这些数据交给每一个单元,这是在Job中完成的,非常高效:

            //保存单元颜色的原生数组
            NativeArray Colors=new NativeArray(Height * Width, Allocator.Temp);
            //保存单元海拔的原生数组
            NativeArray Elevations = new NativeArray(Height * Width, Allocator.Temp);
            //后面将从服务器获取这些数据,现在暂时随机生成
            for (int i = 0; i             
关注
打赏
1664096582
查看更多评论
0.1182s