Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 29.08.2016, 00:27   #1
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
AssetDatabase.LoadAssetAtPath

Господа знатоки!
Известно, что AssetDatabase.LoadAssetAtPath позволяет загрузить ассет по указанному пути (пусть даже он и не в папке Resources).
Работает только в редакторе. Использую частенько, но вот беда: загруженные ассеты не помнят, откуда они взялись (теряют связь с префабом).
В принципе мне это (пока) не критично, но хотелось бы связь не профукивать.

Внимание вопрос: как загрузить ассет в сцену, который лежит не в Resources и при этом не похерить его связь с префабом?

Заодно у буржуев тему поднял: http://answers.unity3d.com/questions...instances.html
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 29.08.2016, 05:05   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Возможно тебе нужна функция PrefabUtility.InstantiatePrefab
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (29.08.2016)
Старый 02.09.2016, 22:58   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Сообщение от pax Посмотреть сообщение
Возможно тебе нужна функция PrefabUtility.InstantiatePrefab
Насколько я выяснил, префаб уже должен быть в сцене, чтобы его можно было заинстансить этой функцией, так? Увы, у меня в сцене изначально их нет.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 03.09.2016, 22:45   #4
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Он инстанцирует то что укажешь. В мануале пример инстанцирования выбранного объекта. Выбирать можно в проекте, а не только в иерархии.
(Offline)
 
Ответить с цитированием
Старый 04.09.2016, 00:35   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Сообщение от seaman Посмотреть сообщение
Он инстанцирует то что укажешь. В мануале пример инстанцирования выбранного объекта. Выбирать можно в проекте, а не только в иерархии.
Каким образом передать выбранный в проекте ассет? Сначала думал, строку пути надо передать, но функция принимает аргумент типа Object. Или чего-то в справке не хватает?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 12.10.2016, 21:07   #6
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Каким образом передать выбранный в проекте ассет?
Тем же самым что в мануале. Копирую оттуда код...
static function CreatePrefab() {    
        var clone : 
GameObject PrefabUtility.InstantiatePrefab(Selection.activeObject as GameObject) as GameObject
    } 
(Offline)
 
Ответить с цитированием
Старый 12.10.2016, 21:26   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Сообщение от seaman Посмотреть сообщение
Тем же самым что в мануале. Копирую оттуда код...
static function CreatePrefab() {    
        var clone : 
GameObject PrefabUtility.InstantiatePrefab(Selection.activeObject as GameObject) as GameObject
    } 
Спасибо за копирование кода из мануала, я его и сам там давно прочитал.
Здесь предлагается передать выделенный в сцене объект.
В сцене у меня ещё нет ни одного такого префаба.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 13.10.2016, 00:17   #8
Антихрист
Разработчик
 
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений
(для 412 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

string path = "Assets/TestFolder/TestPrefab.prefab";
Object objTemp = AssetDatabase.LoadAssetAtPath(path,typeof(Object));
GameObject newObject = PrefabUtility.InstantiatePrefab(objTemp) as GameObject;
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (14.10.2016)
Старый 13.10.2016, 19:08   #9
Антихрист
Разработчик
 
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений
(для 412 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Помогло,не?
(Offline)
 
Ответить с цитированием
Старый 14.10.2016, 00:23   #10
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Спасибо за ответ, прочитал днём, но ещё не имел возможности проверить.
У меня сомнения что-то насчёт этого способа.

AssetDatabase.LoadAssetAtPath(path,typeof(Object));
Уже не помнит связи с префабом.
Почему PrefabUtility.InstantiatePrefab(objTemp) должно "оживить" её?
Мне казалось, результатом действия этого кода выйдет то, что "префабом" будет считаться FBX'ина моделек.

Но — проверю — обязательно отпишу.
Если заработает, будет очень круто.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Антихрист (14.10.2016)
Старый 14.10.2016, 12:14   #11
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: AssetDatabase.LoadAssetAtPath

Я бы в данном случае использовал функцию AssetDatabase.LoadMainAssetAtPath.

Ну и более правильно так (обратить внимание на последнюю строчку):
var path "Assets/TestFolder/TestPrefab.prefab";
var 
objTemp AssetDatabase.LoadMainAssetAtPath(path);
var 
newObject PrefabUtility.InstantiatePrefab(objTemp) as GameObject;
Undo.RegisterCreatedObjectUndo(newObject,"Instantiate Prefab"); 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (24.10.2016)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:08.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com