包含此页的版本:
不含此页的版本:
Unity 在以下情况下会刷新资产数据库:
AssetDatabase.Refresh从代码。其他一些AssetDatabaseAPI 会触发刷新,但仅限于您指定的资产。Unity 在资产数据库刷新期间执行以下步骤:
Assets和Packages自上次检查以来已添加、修改或删除文件夹,并相应地更新资产数据库。如果出现以下情况,Unity 将重新启动资产数据库刷新过程:
OnPostProcessAllAssets时,您可以调用以下任一选项:ForceReserializeAssetsAssetImporter.SaveAndImportAssetDatabase将其他刷新排队的 API,例如 MoveAsset、CreateAsset 和 ImportAsset。资产数据库跟踪两种类型的资产依赖项:静态依赖项和动态依赖项。如果资产的任何依赖项发生变化,则 Unity 会重新导入该资产。
静态依赖项是导入器所依赖的值、设置或属性。静态依赖关系在导入资产之前是已知的,并且在导入过程中不受导入器行为的影响。如果资产的任何静态依赖项发生变化,则 Unity 会重新导入该资产。
静态依赖项包括:
动态依赖关系由源资产的内容定义,通常在导入过程中发现。例如,一个着色器在 GPU 上运行的程序。更多信息
请参阅术语表可能会引用另一个着色器,并且预制件:一种资产类型,允许您存储包含组件和属性的游戏对象。预制件充当模板,你可以从中在场景中创建新的对象实例。更多信息
请参阅术语表可能取决于其他预制件。
导入器还可以根据源资产的内容有条件地使用全局状态,在这种情况下,它也会成为动态依赖项。例如,目标平台、项目的色彩空间、图形API、脚本运行时版本或纹理压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩、动画压缩、音频压缩、构建压缩。
请参阅术语表州。
Unity 将资产的动态依赖项存储在AssetImportContext.
在更改或添加的文件列表中,Unity 会收集与代码相关的文件,并将它们发送到脚本编译管道。编译器从项目中的脚本文件和程序集定义文件生成程序集。有关此步骤的详细信息,请参阅将脚本组织到程序集中。
每个资产的导入器都会处理该类型的资产,并根据文件扩展名识别要导入的文件。例如,TextureImporter 负责导入.jpg、.png和.psd文件等。
有两种类型的进口商:
Unity 首先处理所有本机导入器,然后在单独的阶段处理所有脚本导入器。
这AssetPostprocessorclass 提供了一系列回调,允许您在导入之前(预处理)和导入后(后处理)为不同的资产类型执行工作。有关这些回调和使用示例的详细信息,请参阅AssetPostprocessorAPI 参考。
热重载是在编辑器打开时对脚本和资产应用更改的过程。当编辑器处于 运行(Play) 模式或 编辑(Edit) 模式时,可能会发生这种情况,无需重新启动编辑器即可使更改生效。
当您更改并保存脚本时,Unity 会热重载项目的所有脚本数据。它首先将可序列化变量的值存储在所有加载的脚本中,重新加载脚本,然后恢复值。存储在不可序列化变量中的数据将丢失。
这会影响项目中的所有编辑器窗口和所有 MonoBehaviour 脚本。与其他序列化情况不同,Unity 在重新加载时默认序列化私有字段,即使它们没有 SerializeField 属性。