Unity性能优化篇(十三) 物理优化

1.尽量使用简单的碰撞器进行碰撞检测,如球体碰撞器、盒子碰撞器、胶囊体碰撞器,少用网格碰撞器等复杂的碰撞器(如下图)。即使用多个简单的碰撞器组合在一起,也往往比使用网格碰撞器的性能要好。

2.如果要把多个碰撞器组合成一个碰撞器,可以用复合碰撞器。

使用代码创建复合碰撞器

csharp 复制代码
using UnityEngine;

public class CombineColliders : MonoBehaviour
{
    public Collider[] collidersToCombine;

    void Start()
    {
        // 确保至少有两个碰撞器需要组合
        if (collidersToCombine.Length > 1)
        {
            // 创建一个组合后的碰撞器的边界
            Vector3 min = collidersToCombine[0].bounds.min;
            Vector3 max = collidersToCombine[0].bounds.max;

            // 更新边界以包含所有其他碰撞器的边界
            for (int i = 1; i < collidersToCombine.Length; i++)
            {
                min = Vector3.Min(min, collidersToCombine[i].bounds.min);
                max = Vector3.Max(max, collidersToCombine[i].bounds.max);
            }

            // 创建一个新的盒子碰撞器
            BoxCollider combinedCollider = gameObject.AddComponent<BoxCollider>();
            combinedCollider.center = (min + max) * 0.5f;
            combinedCollider.size = max - min;

            // 禁用原来的碰撞器
            foreach (var collider in collidersToCombine)
            {
                collider.enabled = false;
            }
        }
    }
}

下图是未复合前效果

下图是复合后效果

3.如果同一个功能既可以用碰撞器来做,也可以用触发器来做,则往往使用触发器来做,性能更好。(勾选下图IsTrigger碰撞器就会转变为触发器)

4.尽量减少刚体组件,因为刚体组件的物理计算较多。

5.如果勾选刚体组件的Is Kinematic,则性能会有所提高。但这样一来,这个刚体只会给别的刚体施加力,自己不会受到别的刚体施加的力的作用。

Edit------Project Settings------Player------勾选Optimization下方的Prebake Collision Meshes,可以提高碰撞的效率,但是构建游戏的时间会增长。

Edit------Project Settings------Physics或者Physics 2D------设置Layer Collision Matrix。它规定了哪些Layer层的游戏对象可以彼此碰撞,哪些Layer层的游戏对象会忽略碰撞。如果有些Layer层的游戏对象之前不需要进行碰撞,则可以在这里设置,取消勾选则表示不会碰撞。

Edit------Project Settings------Time------稍微调大Fixed Timestep,这样可以稍微提升游戏性能,但是物体的运动可能会出现问题

相关推荐
一只蝉nahc6 小时前
vue使用iframe内嵌unity模型,并且向模型传递信息,接受信息
前端·vue.js·unity
WiChP11 小时前
【V0.1B6】从零开始的2D游戏引擎开发之路
java·log4j·游戏引擎
小拉达不是臭老鼠11 小时前
Unity05_3D数学
学习·unity·游戏引擎
空中海13 小时前
第七章:安卓性能优化
android·性能优化
全栈工程师修炼指南13 小时前
Nginx | 磁盘IO层面性能优化秘诀:error 日志内存环形缓冲区及小文件 sendfile 零拷贝技术
运维·网络·nginx·性能优化
MU在掘金9169514 小时前
在Perfetto里框选一段卡顿,AI直接告诉你哪行代码有问题
性能优化
历程里程碑15 小时前
二叉树---二叉树的最大深度
大数据·数据结构·算法·elasticsearch·搜索引擎·全文检索·深度优先
迷藏49415 小时前
**TiDB 在高并发场景下的性能优化实战:从慢查询到极致吞吐的跃迁**在现代分布式系统中,数据库不仅是数据存储的
java·数据库·python·性能优化·tidb
3DVisionary16 小时前
新拓三维XTOM系统:汽车模具全场3D检测深度技术问答
性能优化·降本增效·storm·蓝光3d扫描·汽车模具制造·数字化质检·xtom测量仪
风酥糖16 小时前
Godot游戏练习01-第28节-显示效果与音效
游戏·游戏引擎·godot