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

如何在Unity3D中获取ProBuilder对象的实际ObjectSize而非Unity默认尺寸?

获取Unity ProBuilder对象的ObjectSize值

要获取ProBuilder对象编辑器面板里显示的ObjectSize值,直接访问ProBuilderMesh组件的包围盒尺寸即可,这和编辑器里显示的数值完全对应。

正确代码示例

using UnityEngine;
using ProBuilder.Core;

public class GetProBuilderSize : MonoBehaviour
{
    void Start()
    {
        // 获取当前物体上的ProBuilderMesh组件
        ProBuilderMesh pbMesh = GetComponent<ProBuilderMesh>();
        
        if (pbMesh != null)
        {
            // 获取与ObjectSize对应的尺寸值
            Vector3 objectSize = pbMesh.bounds.size;
            
            // 将尺寸值存储到变量中
            float sizeX = objectSize.x;
            float sizeY = objectSize.y;
            float sizeZ = objectSize.z;
            
            Debug.Log($"ObjectSize: X={sizeX}, Y={sizeY}, Z={sizeZ}");
        }
        else
        {
            Debug.LogError("当前物体上未挂载ProBuilderMesh组件!");
        }
    }
}

你之前方法的问题说明

  • transform.localScale:返回的是物体的缩放比例,不是实际尺寸。比如原始网格大小为(2,2,2),缩放设为(0.5,0.5,0.5)时,localScale返回(0.5,0.5,0.5),但编辑器显示的ObjectSize是(1,1,1)。
  • Renderer.bounds:如果ProBuilder对象包含多个子物体或多个Renderer,返回的是整个渲染组的包围盒,不一定和编辑器显示的ObjectSize完全一致。直接使用ProBuilderMesh.bounds是最准确的,它仅针对当前ProBuilder网格的尺寸。

注意:脚本必须引用ProBuilder.Core命名空间,否则无法识别ProBuilderMesh类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:16:02