zoukankan      html  css  js  c++  java
  • Unity中Collider和刚体Collider性能对比

    测试方式:

    每个对象做大范围正弦移动,创建1000-5000个对象,保证场景分割树的实时更新,并测试帧率

    测试脚本:

    移动脚本:

    using UnityEngine;
    using System.Collections;
    
    public class Test1 : MonoBehaviour
    {
        public Rigidbody rigidbodyObj;
    
    
        void FixedUpdate()
        {
            switch (Random.Range(0, 3))
            {
                case 0:
    
                    transform.position = Vector3.forward * Mathf.Sin(Time.time * 180) * 180;
                    //rigidbodyObj.position = Vector3.forward * Mathf.Sin(Time.time * 180) * 180;
    
                    break;
    
                case 1:
    
                    transform.position = Vector3.left * Mathf.Sin(Time.time * 180) * 180;
                    //rigidbodyObj.position = Vector3.left * Mathf.Sin(Time.time * 180) * 180;
    
                    break;
    
                case 2:
    
                    transform.position = Vector3.right * Mathf.Sin(Time.time * 180) * 180;
                    //rigidbodyObj.position = Vector3.right * Mathf.Sin(Time.time * 180) * 180;
    
                    break;
            }
        }
    }
    View Code

    生成器脚本:

    using UnityEngine;
    using System.Collections;
    
    public class Test2 : MonoBehaviour
    {
        public int count = 10000;
        public GameObject template;
    
    
        void Awake()
        {
            for (int i = 0; i < count; i++)
            {
                var go = Instantiate(template);
                go.transform.position = Random.insideUnitSphere * 10f;
            }
        }
    }
    View Code

    测试结果:

    i5的配置下

    500个动力学打开的刚体Collider已经小于20fps,使用Rigidbody.position移动和使用Transform.position移动差别不大。而且500个打开了重力的刚体Collider仅有3fps

    1万个非刚体Collider可以达到30-35fps,并且和是否开关Trigger无关。由于非刚体Collider是被动触发,我还测试了下没有Collider的情况,似乎帧率是快了1-2fps并且相对稳定,也可能是错觉。

  • 相关阅读:
    Lambda Expression in C#
    DirectorySearcher LDAP
    摘录 LDAP
    The return types for the following stored procedures could not be detected
    无法调试存储过程,无法启动T-SQL调试
    根据窗口句柄显示窗体
    还原数据库时提示空间不足
    xml格式发送
    ../ 上一级目录
    匿名函数 invoke
  • 原文地址:https://www.cnblogs.com/hont/p/6034790.html
Copyright © 2011-2022 走看看