首页
/ 【亲测免费】 【Unity】十万人同屏寻路:基于Dots技术的多线程RVO2避障

【亲测免费】 【Unity】十万人同屏寻路:基于Dots技术的多线程RVO2避障

2026-01-21 04:53:56作者:蔡怀权

简介

本资源文件提供了一个基于Unity Dots技术的解决方案,用于实现十万人同屏寻路和多线程RVO2避障。该方案利用了Dots、Jobs System和Burst加速技术,能够在不使用ECS代码的情况下,实现高效的万人同屏动画人物避障。

主要特点

  • 无需ECS代码:本方案绕开了Entities(ECS),无需编写一行ECS代码,现有MonoBehavior开发工作流即可享受Entities渲染的性能提升。
  • 多线程RVO2避障:通过使用Burst Job System和Batch Renderer Group,优化后的方案在5千人场景中提升了20帧左右的性能。
  • 高度封装的插件:作者提供了一个高度封装的插件,支持万人同屏动画人物的避障,并附带性能压力测试包和视频教程。

使用方法

  1. 初始化

    agents = new AgentGroup<Agent>();
    obstacles = new ObstacleGroup();
    simulation = new ORCA();
    simulation.plane = axis; //设置XY方向寻路还是XZ方向
    simulation.agents = agents;
    simulation.staticObstacles = obstacles;
    
  2. 在Update中执行JobSystem Schedule

    private void Update() {
        //Schedule the simulation job
        simulation.Schedule(Time.deltaTime);
    }
    
  3. 在LateUpdate中把RVO计算位置/选装结果设置给物体Transform

    if (m_orca.TryComplete()) {
        if (m_AutoUpdateEntityTrans) {
            RVOAgent agent;
            for (int i = 0; i < m_agents.Count; i++) {
                agent = m_agents[i];
                agent.CachedTransform.position = agent.pos;
                agent.CachedTransform.rotation = agent.rotation;
            }
        }
    }
    

性能测试

  • PC端:10万动画人同屏对抗,性能表现优异。
  • 安卓端:1万动画人同屏避障,性能稳定。

插件依赖

  • Burst + Job System
  • URP(安装URP会自动依赖这些库)
  • 其他依赖包:
    1. GitHub - Nebukam/com.nebukam.common
    2. com.nebukam.job-assist: https://github.com/Nebukam/com.nebukam.job-assist

视频教程

插件使用视频教程详见资源文件中的视频教程部分。

总结

本资源文件提供了一个高效的Unity解决方案,适用于需要大规模同屏寻路和避障的场景。通过使用Dots技术和多线程优化,能够在不重构现有代码的情况下,显著提升性能。

登录后查看全文
热门项目推荐
相关项目推荐