Unity3d 编辑器 资源读取操作失败

官方文档没有对PrefabUtility.CreateEmptyPrefab PrefabUtility.CreatePrefab作清晰地描述,实际对传入的路径有以下要求。否则操作失败

  • 相对于工程路径
  • UNIX-style路径分隔符

常见错误

is not a valid asset file name.
UnityEditor.PrefabUtility:CreatePrefab(String, GameObject)

Couldn’t create asset file!
UnityEditor.PrefabUtility:CreateEmptyPrefab(String)


不能使用绝对路径

错误例子

[MenuItem("GameTools/test1")]
public static void test1()
{
    string fullPath = Application.dataPath + "/test1.prefab";
    PrefabUtility.CreateEmptyPrefab(fullPath);
}

正确写法

[MenuItem("GameTools/test1")]
public static void test1()
{
    string fullPath = "Assets/test1.prefab"
    PrefabUtility.CreateEmptyPrefab(fullPath);
}

必须是UNIX-style的路径分隔符

错误例子

[MenuItem("GameTools/test3")]
public static void test3()
{
    string fullPath = "Assets\\test3.prefab";
    PrefabUtility.CreateEmptyPrefab(fullPath);
}

正确例子

[MenuItem("GameTools/test3")]
public static void test3()
{
    string fullPath = "Assets/test3.prefab";
    PrefabUtility.CreateEmptyPrefab(fullPath);
}

收集的操作规则如下:
Unity3d 编辑器 资源读取操作失败_第1张图片

你可能感兴趣的:(Unity3d)