Как получить паку в которой лежит prefab?

111
30 сентября 2021, 19:10

У меня есть виджет в EditorWindow который формирует список префабов:

public static GameObject[] ObjectArrayField(ArrayFieldSettings settings, GameObject[] array) {
    return ObjectArrayField(settings.label, ref settings.open, array);
}
static public GameObject prefab;
public static GameObject[] ObjectArrayField(string label, ref bool open, GameObject[] array) {
    open = EditorGUILayout.Foldout(open, label);
    int newSize = array.Length < 0 ? 0 : array.Length;
    if (open) {
        newSize = EditorGUILayout.IntField("Size", newSize);
        newSize = newSize < 0 ? 0 : newSize;
        if (newSize != array.Length) {
            array = ResizeArray<GameObject>(array, newSize);
            for(int j=0;j<array.Length;j++) {
                //GameObject prefab;
                array[j] = prefab;
            }
        }
        for (var i = 0; i < newSize; i++) {
            if(array[i]==null) {
                array[i] = (GameObject)EditorGUILayout.ObjectField(i.ToString(),array[i], typeof(GameObject), true);
            } else {
                array[i] = (GameObject)EditorGUILayout.ObjectField(array[i].name,array[i], typeof(GameObject), true);
            }
        }
        // EditorGUILayout.PropertyField(array, new GUIContent("Порядок следования", "обозначь последовательность."), true);
    }
    return array;
}

Как потом у назначенных префабов достать ссылки, где лежат эти префабы? У GameObject, есть только название. Как получить ссылку где лежит префаб я не понял.

Answer 1

Если в вашем окне есть ссылка на конкретный gameObject, который инстанциирован из какого-либо префаба, то путь к префабу можно получить так:

Object parentObject = PrefabUtility.GetCorrespondingObjectFromSource(obj);
string path = AssetDatabase.GetAssetPath(parentObject);

Если ваши GameObject и есть изначально префабы, то найти их можно вызвав только:

string path = AssetDatabase.GetAssetPath(obj);
READ ALSO
Cтупенчатый массив и LINQ [закрыт]

Cтупенчатый массив и LINQ [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

103
DialogResult.OK Не работает. WPF C#

DialogResult.OK Не работает. WPF C#

Почему то выдает ошибку:

125