Unity ScriptableObject 实例不随资源文件更新的解决方案

在 Unity 2020.2.5f1 中,ScriptableObject 实例在资源文件更新后未同步。问题包括直接修改资源文件、通过版本管理工具更新或回退后,Unity 编辑器内实例数据未刷新。官方论坛显示该问题在多个版本中存在,且官方未彻底修复。解决方案是移动资源文件及其 .meta 文件到项目外,刷新资源数据库,然后移回原位置。
摘要由CSDN通过智能技术生成

问题描述

在 Unity ScriptableObject 的使用过程中,遇到了在 Unity 编辑器内 ScriptableObject 实例没有与资源文件同步更新的情况。

我使用的 Unity 编辑器版本为 2020.2.5f1。

遇到该问题的具体场景:

  • 在系统资源管理器中直接修改 .asset 文件。
  • 通过版本管理工具(如 Git、SVN 等)更新或回退 .asset 文件。

经过以上任意一种操作后,再次回到 Unity 编辑器后会有对应资源的刷新过程,但是实际上 ScriptableObject 实例的数据并没有刷新成功,还是之前的数据。

即使在 Project 面板中 Reimport / Refresh 该资源也无济于事,也有尝试在代码中调用 AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate) 函数来重新导入该资源,结果依然没有任何变化。

问题原因

经过一顿 Google 后,在 Unity 官方论坛中找到了类似问题的帖子。

看来这个问题早在 Unity 5.5 甚至更早的版本中就已经存在,Unity 官方技术人员称在 5.6 beta 版本中修复该问题,然而并没有修复成功~

从帖子中可以得知,该问题在 2020.3.13f1 (LTS) 中依然存在…

所以,目前可以确认这个就是 Unity 编辑器的 Bug 了。

解决方案

经过一次又一次的尝试后,最终还是找到了一个可行的解决方案。

简单来说就是:

  1. 将资源文件和其 .meta 文件移动到项目 Assets 目录之外的任意目录;
  2. 刷新 Unity 资源数据库;
  3. 然后再将文件移动回原来的位置。

具体代码:

public static async void 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值