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)

RegIon 01.07.2016 23:18

Ответ: Вопросы от новичка
 
Unity 5.3.5. + 2 монитра.
Поставил второй монитор и словил баг - UI перестает работать если например перенести окно на другой монитор, или даже просто запускать несколько раз (ничего не нажимается, от eventTriger тишина). Это лечится? Ну кроме как перезапуском редактора. Я вот боюсь что отвалится оно в билде, когда я буду использовать несколько мониторов (в доках сказано что так можно - по камере на монитор).
Причем если второй отрубить,то вроде и работает нормально.

UPD. Не работает если даже просто долго с ним взаимодействовать.
UPD. Теперь так даже если отключить второй монитор.
UPD. Случается со всеми версиями. Перешел на 5.3.4 -такая же шляпа. Ошибок нет.

Upd. abd на последней версии СДК порой вешает юнити, походу он и блокирует эвент систем, наверное Юнити ждет подключение устройства (ну когда она отправляет картинку на мобилку)

Собственно баг.

Жека 04.07.2016 09:41

Ответ: Вопросы от новичка
 
Я тоже наблюдал такой баг. Лечение не искал, просто рестартил юнити.

RegIon 04.07.2016 23:43

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

Сообщение от Жека (Сообщение 306834)
Я тоже наблюдал такой баг. Лечение не искал, просто рестартил юнити.

Еслсои есть Android SDK - переименуй adb. Unity его всегда дергает и он висит на последних версиях порой. Помогло.

WISHMASTER35 05.07.2016 23:08

Ответ: Вопросы от новичка
 
Как работает GL.MultMatrix ? Такое чувство, что он не умножает матрицу, а просто задает новую.

Можно написать:
Код:

GL.MultMatrix( Matrix4x4.Scale( new Vector3( 10, 1, 1 ) ) );
GL.MultMatrix( Matrix4x4.Scale( new Vector3( 10, 1, 1 ) ) );
GL.MultMatrix( Matrix4x4.Scale( new Vector3( 10, 1, 1 ) ) );

Но эффект будет, как от одного MultMatrix.

Здесь http://www.cnblogs.com/wantnon/p/5066203.html описывается такая проблема.

pax 06.07.2016 07:19

Ответ: Вопросы от новичка
 
По идее должно множить несколько раз...
Можно наверное умножать несколько раз саму матрицу:
PHP код:

GL.modelview *= Matrix4x4.Scale( new Vector3101) );
GL.modelview *= Matrix4x4.Scale( new Vector3101) );
GL.modelview *= Matrix4x4.Scale( new Vector3101) ); 

Не проверял.

WISHMASTER35 06.07.2016 22:00

Ответ: Вопросы от новичка
 
pax, похоже GL.MultMatrix просто умножает GL.modelview на свою.
Это работает.
Код:

GL.modelview *= matrix;
GL.MultMatrix( matrix2 );


WISHMASTER35 10.07.2016 00:54

Ответ: Вопросы от новичка
 
Еще во времена Unity 3 я нашел такой код, который не дает переключится на другой объект. Т.е. можно клацать по чем угодно в сцене, но выбранный объект не переключится.
Код:

HandleUtility.AddDefaultControl( GUIUtility.GetControlID( FocusType.Passive ) );
Но вот как оно работает, я до сих пор и не понял.

Сейчас надо что-то подобное сделать, только чтобы при нажатии shift + right mouse не срабатывало вращение камеры.

Жека 10.07.2016 05:56

Ответ: Вопросы от новичка
 
Можно на камеру кинуть скрипт, выполняемый во время редактора. И в нём в LateUpdate проверять шифт+мышь. Если есть, то ставим rotation из предыдущего кадра.

WISHMASTER35 10.07.2016 12:17

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

Сообщение от Жека (Сообщение 307011)
Можно на камеру кинуть скрипт, выполняемый во время редактора. И в нём в LateUpdate проверять шифт+мышь. Если есть, то ставим rotation из предыдущего кадра.

Да уж лучше просто Event.current.Use(). Но в таком случае курсор так же меняется на иконку обзора.

UPDATE
Так можно отключить и выбор объектов и вращение камеры. Но как оно работает я все равно не пойму.
Код:

        int controlId = GUIUtility.GetControlID(FocusType.Passive);
        if(Event.current.type == EventType.MouseDown) {
            GUIUtility.hotControl = controlId;
            Event.current.Use();
        }


RegIon 17.07.2016 21:39

Ответ: Вопросы от новичка
 
Корутина WWW неплохо нагружает поток,FPS падает до 15.
Загружаю встречно основным действиям картинку с диска.
До этого грузил по необходимости (т.е нужно сменит - останавливаю обработку, загружаю, обновляю), сейчас решил сделать как-то так:
Работаю с текущим изображением + гружу новое, а потом обновляю, когда нужно. Но это нехило грузит.

Что посоветуете?


Taugeshtu 18.07.2016 13:10

Ответ: Вопросы от новичка
 
Я делал как-то сериализацию текстур в байты и загрузку из байтов, работало шустро (главное не пролюбить задать принимающей текстуре все-все-все параметры как у отдающей байты); плюс загрузку байтов можно перекинуть в другой поток (не уверен, что с загрузкой текстуры проканает, но можешь попробовать)

Если самому лень с тредами копаться - в ассет сторе есть хорошее расширение со скриптом MagicThread, пример исполья - тут.

RegIon 24.01.2017 13:26

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


pax 24.01.2017 15:56

Ответ: Вопросы от новичка
 
Пометь нужные поля своим атрибутом и убери NonSerialized. В своем сериализаторе свой атрибут используй. Я лично именно так и делаю.

UPD: Еще вариант. Те поля, которые красные делай приватными с атрибутом SerializeField и будет тебе счастье.

Evgen 31.01.2017 10:12

Ответ: Вопросы от новичка
 
Для чего серализацию используете? Я так понимаю чтобы сохранять уровни?

pax 31.01.2017 10:50

Ответ: Вопросы от новичка
 
Для сохранения различных данных, не только для уровней. Часто например использую сериализацию для формирования запросов на сервер.


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

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