You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中三种Vector3操作性能对比:new Vector3()/Vector.up*值/Set()谁更快?

Unity中Vector3三种操作的性能对比分析

性能排序(从快到慢)

  • movement.Set(0, y, 0)
  • movement = new Vector3(0f, y, 0f)
  • movement = Vector.up * y

1. Vector3.Set():原地修改,性能最优

Set()是直接修改已有Vector3实例的x、y、z字段,完全不需要分配新的内存空间,只是执行三次简单的float赋值操作,没有额外开销,是三者中最快的实现方式。

2. new Vector3():栈上构造实例,开销极小

Vector3是值类型,通过构造函数new Vector3()创建的实例会在栈上分配内存,虽然比Set()多了结构体实例的创建和赋值步骤,但栈分配的开销可以忽略不计,性能仅略逊于Set()。

3. Vector.up * value:运算符重载带来额外运算

Vector.up是Unity内置的只读常量(0,1,0),执行乘法运算时会调用Vector3的乘法运算符重载方法。这个方法内部会先创建新的Vector3实例,再将原向量的三个分量分别与标量相乘后赋值,相当于执行了new Vector3(0*y, 1*y, 0*y)——既包含结构体创建开销,又多了三次乘法运算(即使结果是0,运算步骤不会省略),所以是三者中最慢的。


注意:以上性能差异非常微小,只有在每帧执行数十万次以上的极端场景下才会体现出明显差距。日常开发中,代码的可读性和维护性应该优先于这种微优化。

自行测试验证

如果想亲手验证性能差异,可以用Unity Profiler,或者编写简单的循环测试代码:

using UnityEngine;

public class VectorPerformanceTest : MonoBehaviour
{
    private const int TestCount = 10000000;
    private Vector3 movement;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            float startTime = Time.realtimeSinceStartup;
            for (int i = 0; i < TestCount; i++)
            {
                movement = new Vector3(0f, 1f, 0f);
            }
            Debug.Log($"new Vector3 耗时:{Time.realtimeSinceStartup - startTime:F4}s");
        }

        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            float startTime = Time.realtimeSinceStartup;
            for (int i = 0; i < TestCount; i++)
            {
                movement = Vector.up * 1f;
            }
            Debug.Log($"Vector.up * value 耗时:{Time.realtimeSinceStartup - startTime:F4}s");
        }

        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            float startTime = Time.realtimeSinceStartup;
            for (int i = 0; i < TestCount; i++)
            {
                movement.Set(0, 1f, 0);
            }
            Debug.Log($"Set() 耗时:{Time.realtimeSinceStartup - startTime:F4}s");
        }
    }
}

内容的提问来源于stack exchange,提问作者user22577952

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:18:29