---
title: "Unity editor模式不运行游戏的情况下，内存加载的图片导致游戏图集加载错误"
author: "石心.Yong"
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/uwa-answer-editor-loaded-texture-atlas-conflict/
type: note
content_role: source
source_type: "source"
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/05-游戏图形与运行时/我的UWA问答/2021-04-14 - Unity editor模式不运行游戏的情况下，内存加载的图片导致游戏图集加载错误.md"
content_hash: de1881daf12a3f07ab9f2681b9264bcab562586525613f79a6b21f4c8ecca8d9
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# Unity editor模式不运行游戏的情况下，内存加载的图片导致游戏图集加载错误

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

## 问题

Unity editor模式下编辑prefab，图片会加载到内存中。导致一开始运行游戏的时候会触发相关图集SpriteAtlasManager.atlasRequested的提前调用，导致图集加载错误。

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

上图是，过早的图集加载，失败时检测到内存中加载的图片。

有没有办法在运行游戏的时候清除编辑预制体时内存中的图片图集？或者类似的办法？

补充：在不运行游戏的情况下调用内存查看的接口，发现内存中仍然有很多图片被加载了

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

- 提问者：潜行医生-577493
- 提问时间：2021-04-13 18:12:33

## 我的回答

这个问题本质上是，当引用到Atlas的Sprite加载时，如果内存中没有Atlas，就会触发加载图集的”请求“（atlasRequested）。Editor下编辑prefab，会生成这个请求，在游戏运行的第一帧，这个请求函数会被调用。而这个请求是由Native层发出的（[RequiredByNativeCode]），所以我们没有办法控制，跟卸载内存中的资源是没有关系的。

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

而这个请求也只会在运行时的第一帧进行调用，所以，不要在第一帧注册atlasRequested事件，在第一帧之后，或者在需要加载相应Prefab时注册该函数，就可以避免在启动游戏时调用该函数。

![image.png](/media/7d9e9bc9285f7d4a8973.png)

- 回答时间：2021-04-14 07:05:16
- 最后更新：2021-04-14 07:05:16
- 采纳状态：已采纳

## 来源与关系

- 上位集合：[我的 UWA 问答](https://www.pystone.net/notes/my-uwa-answers/)
- UWA 标签：项目管理、资源管理、内存管理
- 原始问题：[Unity editor模式不运行游戏的情况下，内存加载的图片导致游戏图集加载错误](https://answer.uwa4d.com/question/6074fe116bb31032f97912ec)
- 源页最后更新：2021-04-14 07:05:16
