尝试 2 天 Unity ECS 记录

博主尝试将项目从 MVC 转向 Unity 的 ECS 模式,以实现数据和显示分离。在采用 HybridECS 模式时遇到组件数据不支持 NULL 类型和不兼容 Unity 的碰撞体与动画机的问题。尽管 ECS 设计模式吸引人,但考虑到项目需求和工作量,最终决定放弃 ECS。文中提到 Unity 官方教程中解决碰撞体问题的方法,但指出该方案复杂且不便。
摘要由CSDN通过智能技术生成

       现在跟朋友在以前做战棋类游戏,由于在第一家棋牌公司深受 MVC 的影响,现在做项目都极大地希望把数据和显示分离。五一前把基本的移动和战斗功能写出来后,五一期间家里有事也没空开发,就搜了些 unity 框架之类的文章看看。发现 ECS 模式挺对我胃口的,就着手尝试把之前写的基本功能改成 ECS 模式开发。出于个人比较懒笔记做得比较少,知识点都是扒下来直接用的,出处也忘记是哪里了,各位大佬还请见谅。

        下载 Entities 以及其他相关插件就不多说了。起初,为了方便上手,选择使用 HybridECS 模式,即还是使用 GameObject 挂载 MonoBehavior 脚本作为代理,同时挂载一个 ConvertToEntity 脚本。在代理脚本中声明 Entity 中的 ComponentData 。

        本来以为这种模式还是能混合 GameObject 使用的话会挺顺利的,但是目前 unity 对 ECS 中的诸多不支持是我没想象到的。例如:

       1.ComponentData 的成员不支持一切可以为 Null 的类型,不仅是 结构体 和 类,数组和列表等容器也不行。由于项目中需要使用数组存储地图,所以这点挺关键的。

       2.Unity 目前的碰撞体和动画机对 ECS 还没有支持。我需要做一个鼠标点击 3D 场景的响应,所以射线碰撞必不可少。本来以为使用 HybridECS 的话这个不会是什么问题,着手实现后才发现即便在 HybridECS 当中,由于第 1 点所以 Entity 也无法获得碰撞体。想起来在B站的 Unity官方 发布的视频中,达叔有做一个使用 ECS 开发《我的世界》的教程,里面需要动态制造和销毁砖块,回去再翻看一遍。发现达叔对碰撞体也是很头疼,制造砖块还好,射线碰撞的响应不

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值