У меня есть виджет в 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, есть только название. Как получить ссылку где лежит префаб я не понял.
Если в вашем окне есть ссылка на конкретный gameObject, который инстанциирован из какого-либо префаба, то путь к префабу можно получить так:
Object parentObject = PrefabUtility.GetCorrespondingObjectFromSource(obj);
string path = AssetDatabase.GetAssetPath(parentObject);
Если ваши GameObject и есть изначально префабы, то найти их можно вызвав только:
string path = AssetDatabase.GetAssetPath(obj);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском