递减 Unity 用来确定是否允许自动 AssetDatabase 刷新行为的内部计数器。
Unity 在内部联合使用此方法和相应的 AssetDatabase.DisallowAutoRefresh 方法,以防止在某些操作期间发生自动刷新。例如,Unity 的版本控制集成使用此方法来防止在获取新变更集期间发生自动刷新。
如果您正在构建自己的编辑器工具,并且希望在您自己的操作期间防止资产自动刷新(例如,如果您正在构建与版本控制系统的自定义集成),则此方法非常有用。此方法不会简单地启用自动刷新功能。相反,它会递减一个计数器,并且仅当计数器达到零时才允许自动刷新。它的设计目的是在调用 AssetDatabase.DisallowAutoRefresh 在之前已将其禁用之后重新启用自动刷新。
每次调用 DisallowAutoRefresh 时,您都必须确保也相应地调用 AllowAutoRefresh。例如
AssetDatabase.DisallowAutoRefresh(); // your code here, performed while auto-refresh is not allowed AssetDatabase.AllowAutoRefresh();
Unity 使用计数器而不是简单的开/关布尔值的原因是,如果您的代码执行了多个嵌套的“禁用”和“启用”对,则内部对不会意外地过早地重新启用自动刷新。相反,每个对会将计数器递增或递减一,并且如果您的代码正确嵌套,那么 AllowAutoRefresh 的最终外部调用会将计数器设为零。
重要提示
此方法不会影响 AssetDatabase.Refresh 的行为。如果调用了 AssetDatabase.Refresh,则 Asset 数据库始终执行刷新,而不管此方法及其内部计数器如何。
这种方法与 Unity 偏好设置窗口中不修改此内部计数器的“自动刷新”设置分离。如果禁用 Unity 的自动刷新首选项设置,则调用允许和拒绝仍会修改内部计数器,但无论内部计数器是否为零,编辑器都不会自动刷新。
代码绝不会使计数器低于零。当内部计数器低于零时,此方法断言但仍继续递减它。请牢记这一点,因为如果你没有像拒绝一样多次调用此方法,这意味着自动刷新将不起作用。
更多资源:AssetDatabase.DisallowAutoRefresh。