---
title: "关于mesh占用内存的问题"
author: "石心.Yong"
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/uwa-answer-mesh-memory-usage/
type: note
content_role: source
source_type: "source"
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/05-游戏图形与运行时/我的UWA问答/2021-04-28 - 关于mesh占用内存的问题.md"
content_hash: 00217798323bb13fd5afdb03b4627022ef0401d291667d6a079f2992dc09d4e6
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# 关于mesh占用内存的问题

> **note · 我的 UWA 问答**
> 本文收录我在 UWA 问答发表的公开回答。问题内容归原提问者；回答保留当时语境，技术结论可能受 Unity 版本、平台和项目条件限制。

## 问题

在unity2020中能看见mesh中包含那些信息：

![image.png](/media/f8f7727e82e4d525e4af.png)

（导入骨骼）

这里如果不导入骨骼的话，顶点信息占用空间会减少一倍，请问导入骨骼后顶点信息增加了什么

![image.png](/media/cc424694cead57931a4f.png)

（未导入骨骼）

然后是第二个问题，在导入骨骼的情况下内存中这个mesh占用了0.6m刚好差不多是上面inspector中显示的两倍，做过其他模型的测试也是两倍

![image.png](/media/99ad1a5c8aac423c9659.png)

本来以为是开启read/write Enabled的问题，但是发现开不开起这个选项占用内存都不变。这个内存占用是怎么来的，开启read/write Enabled是否具体会造成两倍的内存开销

- 提问者：正二八经
- 提问时间：2021-04-28 19:43:24

## 我的回答

第一个问题：

Inspector面板的Vertices一栏指的是Mesh的顶点属性（或通道），如果该Mesh包含某个通道的数据，就意味着每个顶点都有一份该顶点属性。

![image.png](/media/4aab08c1db594108591c.png)

而Unity定义的顶点通道一共有14个：

![image.png](/media/f93972e52b8c40847f44.png)

如果导入了骨骼，多出来的顶点属性是顶点的骨骼权重和骨骼索引。

![image.png](/media/30a2a2d1bf57936a1b54.png)

可通过Mesh.boneWeights()和Mesh.GetBonesPerVertex()访问。

而一个BoneWeight属性存了4个float32和4个int32，一共8x4=32bytes。一个Bones index是一个byte。

![image.png](/media/df96af4c7fc07d9f5cff.png)

(8x4+1)byte/vert x 5512vert = 177.63KB

###

- 回答时间：2021-04-28 22:49:17
- 最后更新：2021-04-28 23:03:56
- 采纳状态：已采纳

## 来源与关系

- 上位集合：[我的 UWA 问答](https://www.pystone.net/notes/my-uwa-answers/)
- UWA 标签：资源管理
- 原始问题：[关于mesh占用内存的问题](https://answer.uwa4d.com/question/6088d9dc6bb31032f979147e)
- 源页最后更新：2021-11-20 22:28:02
