# 写锁

> Understand how write locks prevent you from overwriting changes made to data from other sources.

写锁可以确保在您更新数据项时不能覆盖其他地方的更改。例如，代码的不同部分或 Cloud Code 脚本发生了变化。

如需查看使用写锁的示例，请参阅 Cloud Save SDK 中的 [`SaveItem` 类](https://docs.unity3d.com/Packages/com.unity.services.cloudsave@latest/index.html?subfolder=/api/Unity.Services.CloudSave.Models.SaveItem#Unity_Services_CloudSave_Models_SaveItem_WriteLock)。

## 强制实施冲突检查##enforces-conflict-checks

读取和写入命令都会返回一个 `writeLock`，您可以将其存储在本地。当您保存一个值时，您可以包含您获得的 `writeLock`。如果写锁与 Cloud Save 服务中的值不匹配，该服务将返回错误，表明自上次获取写锁以来该服务中的值已更新。

### 解决冲突##conflict-resolution

如果您遇到写锁错误，可以执行以下操作之一：

* 如果您确定要保存的值是正确的，您可以绕过写锁来[覆盖任何更改](#overwrite-changes)。
* 要从 Cloud Save 服务更新值和写锁，请再次读取该值。然后，您可以手动解决冲突。

## 省略写锁##write-lock-omission

### 创建项##item-creation

为了避免不必要的错误，您需要在创建新数据项时省略 `writeLock` 字段。

### 覆盖更改##overwrite-changes

要跳过写锁验证，您可以将一个项的 `writeLock` 字段设置为 `null`。写锁为 null 意味着您将覆盖该项存储的任何现有值。
