在Unity中设置网格的尺寸

时间:2016-08-07 03:00:59

标签: unity3d

我有一个GameObject的四元组MeshFilter。默认情况下它的尺寸为1x1,我可以通过设置其比例来更改其大小,但这也会相对于比例的变化调整其所有子元素的大小。我试过给它RectTransform,但改变宽度和高度似乎不会改变它的大小。常规的Transform组件没有宽度或高度控件。

如何在不缩放所有子元素的情况下在Unity中设置网格的大小?

2 个答案:

答案 0 :(得分:0)

Unity将网格以及图像和声音视为在应用程序之外创建的资源。当然,在Unity中你可以移动3D模型,缩放和旋转它们,但这些是非常基本的3D建模功能,你将无法在其中正确编辑3d模型。就个人而言,我认为这仅适用于由缩放立方体制成的粗糙原型。

因此,如果您想修改这些资产,您可以:

  1. 打开一个单独的应用程序(Blender,3ds Max,Maya for 3d models)并创建所需的网格。这可能是您想要的解决方案。

  2. 创建一个将在运行时更改Mesh object的脚本。虽然它是解决某些问题的好方法,但它可能不是你想要的。

  3. 使用为Unity带来3D建模功能的第三方软件包之一,例如ProBuilder。请注意,我没有使用它,这不是推荐 - 我只是表明存在这种替代方案。

答案 1 :(得分:0)

你需要计算它:)

  1. 从渲染器组件获取当前边界。这是你在场景中的真实物体尺寸。
  2. 为预期范围计算新的比例。
  3. 例如,你有:

    actualBounds.x100

    所有维度的缩放均为1

    var expectedBoundX = 150   
    var newScaleX = expectedBoundX / (actualBounds.x/scaleX);
    

    之后只需将此newScaleX设置为X比例:)