forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

seaman 09.02.2013 15:17

Ответ: Вопросы от новичка
 
Цитата:

Но это реально работает.
Продемонстрируйте. Потому как полная лажа. Пока не инстансируете объект из префаба не существует ни одного экземпляра скриптов, "нацепленных" на префаб. Вызывать просто нечего.
ЗЫ:
Okay уменьши картинку. Форум сильно рвет.

Okay 09.02.2013 15:48

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от seaman (Сообщение 252201)
ЗЫ:
Okay уменьши картинку. Форум сильно рвет.

Уменьшил.
Кстати вот код спавна при успешном подключение к серверу
Код:

GameObject newplayer = GameObject.Instantiate(PlayerPrefab) as GameObject;

WISHMASTER35 09.02.2013 15:51

Ответ: Вопросы от новичка
 
seaman, не знаю. Может меши не грузятся, но скрипты отлично работают.
Код:

blockSet.transform.position = Vector3.one;
Debug.Log( blockSet.transform.position );

Такой код работал.

Я вот думаю может ScriptableObject использовать. Точно не знаю, но у него OnEnable должен вызываться после его загрузки.

seaman 09.02.2013 16:24

Ответ: Вопросы от новичка
 
Что есть blockSet в данном случае?
Нет на сцене префаба, какой может быть у него position? На сцене только объекты. Или вручную помещенные туда в редакторе, или сгенерированные скриптом или инстанируемые из префабов, других объектов. Ну и что такое position у того чего нет на сцене?
Насчет ScriptableObject не знаю точно. Насколько я понимаю его нужно создавать ScriptableObject.CreateInstance или загружать из бандлов. Тогда вызовется OnEnable. Час посмотрю. Может что-то пойму получше.

WISHMASTER35 09.02.2013 16:28

Ответ: Вопросы от новичка
 
seaman, position это просто поле(или свойство) скрипта Transform. Проверь, все отлично вызывается. Видно объекты все же создаются.
У ScriptableObject OnEnable вызывается и при загрузке редактора и при загрузки сцены. В моем случае с ним оказалось удобнее работать.

seaman 09.02.2013 16:38

Ответ: Вопросы от новичка
 
Цитата:

поле(или свойство) скрипта Transform
Вы вообще понимаете, что прежде чем изменить поле какого то скрипта (класса) нужно создать экземпляр этого класса? Нет экземпляра скрипта transform пока не создашь объект на котором этот скрипт висит! Если у Вас эти две строчи работают, значит у Вас есть на сцене объект blockSet. Значит вы его как то уже создали. Как - вам виднее.

seaman 09.02.2013 16:46

Ответ: Вопросы от новичка
 
Ну в -общем частично был не прав. Получается что я совсем не понимаю работы Юнити с префабами. Приношу свои извинения.

pax 09.02.2013 16:47

Ответ: Вопросы от новичка
 
Префаб в ресурсах это тоже объект, на нем висят скрипты и т.д., он просто не в сцене. Изменять его параметры и вызывать на нем функции не надо, т.к. это ведет к изменению ассета.

WISHMASTER35 09.02.2013 16:56

Ответ: Вопросы от новичка
 
Цитата:

Изменять его параметры и вызывать на нем функции не надо, т.к. это ведет к изменению ассета.
Ну во первых я вызывал из режима игры.
Во вторых даже если из редактора это делать, то у изменяемого скрипта должен быть атрибут [ExecuteInEditMode], еще и SetDirty возможно нужно вызывать.

pax 09.02.2013 16:58

Ответ: Вопросы от новичка
 
Из режима игры в редакторе меняются ассеты, так что осторожнее с этим.

WISHMASTER35 09.02.2013 20:07

Ответ: Вопросы от новичка
 
Продолжаю делать свой формат. Делаю чтобы список материалов содержался в xml файле. Т.е. хранились пути к материалам.
Получить путь к ассету легко AssetDatabase.GetAssetPath
Но как загрузить ассет зная этот путь? Resources.LoadAssetAtPath работает только в редакторе.
Или можно сохранять ID материала, а потом как-то загружать его по id?

Okay 09.02.2013 20:23

Ответ: Вопросы от новичка
 
Помогите с PlayerIO. Очень нужно. Проект стоит из-за этой проблемы. А в документации ничего не написано про синхронизацию

WISHMASTER35 09.02.2013 20:27

Ответ: Вопросы от новичка
 
Okay, не многие с сетью работали вообще. Создай тему на профильном форуме.

pax 09.02.2013 21:10

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 252228)
Продолжаю делать свой формат. Делаю чтобы список материалов содержался в xml файле. Т.е. хранились пути к материалам.
Получить путь к ассету легко AssetDatabase.GetAssetPath
Но как загрузить ассет зная этот путь? Resources.LoadAssetAtPath работает только в редакторе.
Или можно сохранять ID материала, а потом как-то загружать его по id?

Грузить можно только из папки Resources. Остальные ассеты подключаются к объектам и не попадают в билд, если на них нет ссылок.

WISHMASTER35 09.02.2013 21:16

Ответ: Вопросы от новичка
 
Я и так в Resources все кинул.
В документации написано что Resources.LoadAssetAtPath возвращает null в сборках.
Видимо никак не получится хранить ссылку или путь на объект, чтобы потом можно было его загрузить.
Интересно как Resources.Load поведет себя, если будет несколько ассетов с одинаковыми именами. Или он может и полный путь принимать, а не только имя?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot