如果想用ECS实现技能系统有什么好的思路

如果想用ECS实现技能系统有什么好的思路

1)如果想用ECS实现技能系统有什么好的思路
2)在使用Recast Navigation时遇到的两个问题
3)通过摇杆控制角色移动时,怎么获取要移动方向上的坐标
4)有判断一个点是否在NavMesh上的接口吗


这是第406篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

Script

Q:在DOTS中,如果想用ECS实现技能系统有什么好的思路吗?

A:有,但是开发成本太大。没有特别值得推广的设计,本身ECS是可以的,但是非得用上DOTS,是不值得的。如果只用ECS,帧同步类游戏会非常方便,但是MMO等回调驱动的游戏,与OOP的开发难度一致甚至略高,后期成本在于把握各种时序。无DOTS的ECS,可以直接参考ET框架。

如果是割草游戏中小兵的“技能系统”,建议直接硬做。以实现需求为主,也就是1个技能1个System,开单子做功能。想要通过某些“设计”一劳永逸,基本不太可能。本身ECS的抽象性就是远远不如OOP的,再加上DOTS中禁用Class,导致你所有“抽象”行为基本全不被支持。

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/67160df6682c7e5cd61bf960


Terrain

Q:在使用Recast Navigation遇到的两个问题:
1. 场景中的资源(网格 bin 文件)都打成AssetBundle了,那现在LoadNavMesh的方法是不是就会有问题了,要怎么修改?

2. 切换场景的时候,之前场景加载的场景数据怎么清除?

A:1. 可以把文件内容在C#里读出来,然后直接传给LoadNavMesh,也就是要改一下 LoadNavMesh的实现,把LoadNavMesh(path)改成LoadNavMesh(content)。

  1. LoadNavMesh里换成新的内容,然后把之前的数据清掉。

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/67160fcc682c7e5cd61bf961


Terrain

Q:用Recast Navigation时,在通过摇杆控制角色移动时,怎么获取要移动方向上的坐标?

A:代码如图所示:

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/6716110a3d306f3e9d594d48


Terrain

Q:有判断一个点是否在NavMesh上的接口吗?

A:代码如图所示:

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/671611893d306f3e9d594d49

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859