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)

Nex 15.05.2016 01:59

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

Сообщение от WISHMASTER35 (Сообщение 306067)
А перезапуск VS не помогает?
То, что ты описал происходит, когда ты открыл конкретный файл, а не проект.
Может ты не нажал Reload All, когда юнити изменил файл проекта.

Жму Reload All, но может быть иногда жму не то, что надо.

Цитата:

Сообщение от WISHMASTER35 (Сообщение 306067)
Подскажите, из объекта можно получить ссылку на префаб?

Попробуй это PrefabUtility.GetPrefabParent

WISHMASTER35 15.05.2016 15:01

Ответ: Вопросы от новичка
 
Никто не знает как в инспекторе отрисовать интерактивное превью GameObject'а?
Вот чтобы меш отрисовать есть класс PreviewRenderUtility.

Код:

    public override void OnInteractivePreviewGUI(Rect rect, GUIStyle background) {
        if(Event.current.type == EventType.MouseDrag) {
            angles.x += Event.current.delta.y;
            angles.x = Mathf.Clamp( angles.x, -60, 60 );
            angles.y += Event.current.delta.x;
            Event.current.Use();
        }

        if(Event.current.type == EventType.Repaint) {
            previewRender.m_Camera.transform.position = Vector3.zero;
            previewRender.m_Camera.transform.rotation = Quaternion.Euler( angles );
            previewRender.m_Camera.transform.Translate( 0, 0, -10 );
            previewRender.m_Camera.farClipPlane = 100;

            previewRender.BeginPreview( rect, null );

            Vector3 pos = -mesh.bounds.center;
            for(int i = 0; i < mesh.subMeshCount; i++) {
                previewRender.DrawMesh( mesh, pos, Quaternion.identity, materials[i], i );
            }

            previewRender.m_Camera.Render();
            var texture = previewRender.EndPreview();
            GUI.DrawTexture( rect, texture );

            Event.current.Use();
        }
    }

А как GameObject отрисовать не ясно. Можно конечно в тупую достать из него все меши и их рисовать. Но может есть способ по лучше?

pax 15.05.2016 18:55

Ответ: Вопросы от новичка
 
Если это ассет, то можно наверное этим методом получить превью:
http://docs.unity3d.com/ScriptRefere...etPreview.html

PS: а если GO поставить перед камерой previewRender.m_Camera перед строчкой previewRender.m_Camera.Render(); ничего не происходит?

WISHMASTER35 18.05.2016 17:06

Ответ: Вопросы от новичка
 
Я пока использую AssetPreview.GetAssetPreview, но это просто текстура. Никакого интерактива, еще и разрешение маленькое.

PreviewRenderUtility давно появился? Почему-то только недавно я его обнаружил.
Раньше я вручную ставил и камеру и объект, чтобы отрендерить привью, но ничего хорошего так и не вышло. Лучше обойдусь GetAssetPreview.

А как правильно по нажатию мышки удалять\добавлять GUI элементы?
В редакторе вроде никаких проблем не было, а в игре кидает ошибку, что между Layout и Repaint были изменения.
Код:

ArgumentException: Getting control 2's position in a group with only 2 controls when doing mouseDown
Aborting


pax 18.05.2016 22:51

Ответ: Вопросы от новичка
 
Я обычно вызываю функцию GUIUtility.ExitGUI(); и потом return после таких изменений.

WISHMASTER35 21.05.2016 13:46

Ответ: Вопросы от новичка
 
В Unity 5 что-нибудь изменилось с execution order ?
Ибо в 4й версии он явно был сделан от балды.
Было бы лучше задавать execution order атрибутом для каждого класса и даже для конкретного уровня программы (namespace, например).

Сейчас же заметил, что инстансированному объекту пофиг на его execution order. Но это в юнити 4. Может в 5й уже исправили.

WISHMASTER35 25.05.2016 16:19

Ответ: Вопросы от новичка
 
А никак нельзя узнать для какого свойства было вызвано OnValidate?
Или хотя бы для свойства оно было вызвано или нет? Ибо оно вызывается перед Awake и после OnDestroy.

pax 25.05.2016 16:54

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

Сообщение от WISHMASTER35 (Сообщение 306205)
А никак нельзя узнать для какого свойства было вызвано OnValidate?
Или хотя бы для свойства оно было вызвано или нет? Ибо оно вызывается перед Awake и после OnDestroy.

Первый раз про эту функцию услышал, к сожалению видимо в ней не определить что изменилось.

WISHMASTER35 25.05.2016 18:53

Ответ: Вопросы от новичка
 
Как же мешает, что изменение GUI.matrix влияет на Area или Group, которые были заданы до изменения матрицы!!!
Т.е. чтобы было что-то типа GL.PushMatrix.
Ибо часто надо рисовать с перевернутой Y координатой и в других масштабах.
Надеялся что в Unity 5 исправят, но нет(

WISHMASTER35 29.05.2016 20:15

Ответ: Вопросы от новичка
 
Теперь EditorUtility.SetDirty не работает для объектов сцены.
Надо использовать SerializedObject, Undo.RecordObject или EditorSceneManager.MarkSceneDirty
Я теперь каждый раз должен вручную проверять принадлежит ли объект сцене или нет?!

В самой юнити, я так понял, пишут так:
Код:

        SerializedProperty damageProp;
        SerializedProperty armorProp;
        SerializedProperty gunProp;
       
        void OnEnable () {
                // Setup the SerializedProperties.
                damageProp = serializedObject.FindProperty ("damage");
                armorProp = serializedObject.FindProperty ("armor");
                gunProp = serializedObject.FindProperty ("gun");
        }

Но это же кошмар.

Жека 30.05.2016 07:21

Ответ: Вопросы от новичка
 
Я недавно увидел полезный пункт в меню Create окна Hierarchy - "Create Empty Child", это позволяет создавать пустышку внутри выделенного объекта. скрин https://yadi.sk/i/91zF1aYxs6vKV

pax 30.05.2016 09:48

Ответ: Вопросы от новичка
 
2WISHMASTER35
1. В OnGUI можно рисовать с использованием GL, это не решит проблемы? В целом можно так же рисовать в событии EventType.Repaint, когда Layout уже рассчитан, тогда изменение матрицы не должно повлиять на него, ну и в целом свои функции push и pop можно попробовать сделать.
2. В целом да, надо еще проверять, в какой сцене ты его редактируешь наверное) Но лучше использовать Undo.

Постоянно путаю ARA с Жекой по аватарке... немного бесить уже начинает

ARA 30.05.2016 18:27

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

Постоянно путаю ARA с Жекой по аватарке... немного бесить уже начинает
Как? Мы такие разные!

pax 30.05.2016 20:18

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

Сообщение от ARA (Сообщение 306259)
Как? Мы такие разные!

Все время казалось, что это твоя ава)

WISHMASTER35 30.05.2016 22:42

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

Сообщение от pax (Сообщение 306258)
2WISHMASTER35
1. В OnGUI можно рисовать с использованием GL, это не решит проблемы? В целом можно так же рисовать в событии EventType.Repaint, когда Layout уже рассчитан, тогда изменение матрицы не должно повлиять на него, ну и в целом свои функции push и pop можно попробовать сделать.

GL текстуру вроде бы не может нарисовать. Разве через какие-то ухищрения.

А вот вторая идея - интересная. Странно, что сам не догадался, что можно изменять матрицу не для всех событий)


pax, ты уже работал с новым UNET?
Как при спавне передать некоторые параметры (цвет, имя)?
В фотоне были photonView.owner.customProperties. И то мне этот способ не нравился ибо эти свойства будут там постоянно висеть.


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

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