Unity Mesh 和 SharedMesh 的区别 以及 Bounds的使用

sharedMesh

返回网格过滤器的共享网格。

建议仅将此函数用于读取网格数据 而不用于写入,因为您可能会修改导入的资源,使用此网格 的所有对象都会受影响。 此外请注意,无法撤销对此网格进行的更改。

using UnityEngine;

public class Example : MonoBehaviour
{
    
    
    // Permanently scales the size of the mesh by a factor.

    float scaleFactor = 2f;

    void Start()
    {
    
    
        Mesh mesh = GetComponent<MeshFilter>().sharedMesh;

        Vector3[] vertices = mesh.vertices;
        for (int p = 0; p < vertices.Length; p++)
        {
    
    
            vertices[p] *= scaleFactor;
        }
        mesh.vertices = vertices;
        mesh.RecalculateNormals();
    }
}

拥有 sharedMesh 的基本只有一下三个
在这里插入图片描述
而mesh呢 是下面这样的解释
在这里插入图片描述
最有意思的是 https://docs.unity3d.com/cn/2021.1/ScriptReference/Mesh.html
看看mesh的类介绍
很全面

在这里插入图片描述
看这个
和 renderer里的不太一样哦
在这里插入图片描述
在这里插入图片描述
MeshFilter的mesh.bounds可以理解为本身模型的大小 和渲染无关 所以忽略了scale
MeshRenderer的bounds 其实可以理解为渲染的时候用的 所以他计算了scale
所以
mesh.bounds是相对于自己的 输出center就可以知道 不会变
MeshRenderer.bounds 是相对于世界的 所以移动会改变
在这里插入图片描述
他的一些api很重要

MeshFilter 看着很难以理解
其实就几个属性
在这里插入图片描述
在这里插入图片描述

还有 MeshRenderer
在这里插入图片描述
也是非常简单
看他的描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38913715/article/details/122232279#comments_24893345
今日推荐