版本: Unity 6 (6000.0)
语言英语
  • C#

AssetDatabase.MakeEditable

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每一项更改建议,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static bool MakeEditable(string path);

参数

path 指定相对于项目根目录的文件路径。

返回值

bool true 如果 Unity 在版本控制系统中成功地使文件可编辑。否则,返回 false

描述

使文件在版本控制中可编辑。

您的版本控制系统可能被配置为一次只允许一个人编辑某些类型的文件,以避免在多个人编辑同一个文件时产生的合并冲突。在这种情况下,您必须“打开”该文件以进行编辑(也称为“签出”),以确保您现在有权编辑该文件。使用此函数使文件在支持它的版本控制系统中“可供编辑”。

位于 Unity 项目文件夹之外或不在版本控制文件夹下(例如,“Library”或“Temp”)的文件路径始终被视为可编辑。 MakeEditable 对它们返回 true,否则什么也不做。

引用非本地包文件夹的文件路径始终被视为不可编辑。 MakeEditable 对它们返回 false

当没有激活版本控制系统时,项目内的所有文件路径都被视为已可编辑。 MakeEditable 返回 true,否则什么也不做。

当使用版本控制系统(例如 Perforce Helix)时,MakeEditable 会对文件触发“签出”操作,除非它们已经可编辑。对于尚未添加到版本控制中的文件,MakeEditable/ 会将它们添加到版本控制中。

如果您设置了预签出回调,Unity 会在 MakeEditable 的一部分中调用它。有关更多详细信息,请参阅 PreCheckoutCallback

using UnityEngine;
using UnityEditor;

public class ExampleScript : MonoBehaviour { [MenuItem("Example/Checkout Selected Asset")] public static void MenuExample() { var path = AssetDatabase.GetAssetPath(Selection.activeObject); var ok = AssetDatabase.MakeEditable(path); if (!ok) Debug.LogError($"Could not make {path} editable"); } }

其他资源:AssetDatabase.IsOpenForEdit.


声明

public static bool MakeEditable(string[] paths, string prompt, List<string> outNotEditablePaths);

参数

paths 指定相对于项目根目录的一组文件路径。
prompt 如果需要执行版本控制操作,则向用户显示的对话框提示。如果为 null(默认),则不显示任何提示。
outNotEditablePaths 无法使其可编辑的文件路径的输出列表。

返回值

bool true 如果 Unity 在版本控制系统中成功地使所有文件可编辑。

描述

使一组文件在版本控制中可供编辑。

MakeEditable 的多文件变体,它还可以选择在需要进行签出/添加版本控制操作时向用户显示提示。如果用户取消对话框,Unity 不会使文件可编辑。如果 Unity 编辑器以批处理模式运行,Unity 不会显示对话框,并且会像用户接受对话框提示一样执行。

如果您传递一个 outNotEditablePaths 列表,此函数会用 Unity 无法使其可编辑的文件路径填充它。

using System.Linq;
using UnityEngine;
using UnityEditor;

public class ExampleScript : MonoBehaviour { [MenuItem("Example/Checkout Selected Assets")] public static void MenuExample() { var guids = Selection.assetGUIDs; var paths = guids.Select(AssetDatabase.GUIDToAssetPath).ToArray(); var ok = AssetDatabase.MakeEditable(paths, "These files need to be checked out"); if (!ok) Debug.LogError("Could not make some files editable"); } }

其他资源:AssetDatabase.IsOpenForEdit.