Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Маштабирование сцены под разные экраны Unity3D (2 стр)

Маштабирование сцены под разные экраны Unity3D (2 стр)

Поделиться

Страницы: 1 2

LucasitoПостоялецwww21 авг. 201719:31#15
bretbas
> Да уже так и делаю...никакого наследования вообще.
наследование есть, это же c#
KumoKairoПостоялецwww21 авг. 201719:34#16
Он идёт через string потому что им никто кроме начинающих не пользуется. Основная проблема с Find Object и Find Object With Tag не в том, что они работают со строками, а в том что они перебирают всю сцену в поисках нужных объектов. Поэтому в реальных проектах практически невозможно встретить код, зависящий от этого функционала. Более критичные вещи типа установки параметров шейдеров, поиска параметров в меканим и т.д., где идёт прямая зависимость от функционала движка, опционально (и крайне рекомендуемо) используются интовые хешированные значения строковых констант. Можно кстати ссылку на тему про теги, которую вы создали?
https://docs.unity3d.com/ScriptReference/Shader.SetGlobalFloat.html
https://docs.unity3d.com/ScriptReference/Animator.GetInteger.html
https://docs.unity3d.com/ScriptReference/Animator.StringToHash.html
bretbasПостоялецwww21 авг. 201720:41#17
Lucasito,
наследование есть, это же c#

Да есть то оно есть, только оно после переработки в мозгу своей задачи, не нужно стало. Префабы и все. Но это конкретно в одной задаче. Как там дальше будут развиваться дела, пока не знаю, но думаю в скором времени обращусь к наследованию:)

KumoKairo,

Он идёт через string потому что им никто кроме начинающих не пользуется

Вот!! Кто мне еще сказал бы это кроме Вас?:)
Основная проблема с Find Object и Find Object With Tag не в том, что они работают со строками, а в том что они перебирают всю сцену в поисках нужных объектов

Это тоже нигде не написано. Долго все это...
опционально (и крайне рекомендуемо) используются интовые хешированные значения строковых констант

Базара нет, но придется тогда отказываться от unity наворочек всяких, и писать функционал под свой лад с хешированными таблицами и тд:)
Уже тоже столкнулся. Самое главное, никак нельзя это изменить. Остается только или использовать то, что дают, или писать свое...
Можно кстати ссылку на тему про теги, которую вы создали?

Да, конечно. Вот она:
http://unity3d.ru/distribution/viewtopic.php?f=105&t=44429&am… 76353#p276353
KumoKairoПостоялецwww21 авг. 201723:10#18
Это тоже нигде не написано

https://docs.unity3d.com/ScriptReference/GameObject.Find.html
For performance reasons, it is recommended to not use this function every frame.

https://stackoverflow.com/questions/21978043/unity-performance-is… -game-objects
UPD - с оф форума чувак заморочился с тегами так же как и вы, и таких тем там пруд пруди:
https://forum.unity3d.com/threads/squeezing-out-performance-compa… jects.178593/
И не стоит забывать про первое правило оптимизации - profile first

Да, конечно. Вот она:
http://unity3d.ru/distribution/viewtopic.php?f=105&t=44429&am… 76353#p276353


unity3d.ru это совсем не оф форум. Оф форум это https://forum.unity3d.com/

Ну и по поводу посимвольного сравнения строк в C# совсем не так однозначно как вы написали. Во-первых само сравнение строк в C# работает более хитро (и иногда оптимизировано) чем просто посимвольное сравнение, а во вторых не стоит забывать что Unity это всё таки движок на C++ и большая часть нативного функционала работает на С++ в обход правил C#. Например приведённые выше варианты с аниматором и шейдерами внутри используют промежуточное хеширование строки в int и прямое сравнение, либо через выдачу по интовому значению напрямую. То есть от строки требуется только возможность перевода её в интовый хеш (часть функционала на C#, часть на С++)

В общем опыт придёт со временем, главное сохранять позитивный настрой к обучению.

Правка: 21 авг. 2017 23:13

bretbasПостоялецwww22 авг. 20179:40#19
KumoKairo,
Ну и по поводу посимвольного сравнения строк в C# совсем не так однозначно как вы написали. Во-первых само сравнение строк в C# работает более хитро (и иногда оптимизировано) чем просто посимвольное сравнение, а во вторых не стоит забывать что Unity это всё таки движок на C++ и большая часть нативного функционала работает на С++ в обход правил C#. Например приведённые выше варианты с аниматором и шейдерами внутри используют промежуточное хеширование строки в int и прямое сравнение, либо через выдачу по интовому значению напрямую. То есть от строки требуется только возможность перевода её в интовый хеш (часть функционала на C#, часть на С++)

Тоесть внутри все равно это string'овое значение переводится в int'вое значение хеш ключа, и поиск происходит по нему?:)

В общем опыт придёт со временем, главное сохранять позитивный настрой к обучению.

Это да...но последнее время оно угасает...
KumoKairoПостоялецwww22 авг. 201715:23#20
Если угасает, то бросайте, лучше не мучиться :)
bretbasПостоялецwww22 авг. 201717:16#21
KumoKairo, максимум на время и от GameDev'а. Программирование не брошу:)

Страницы: 1 2

/ Форум / Программирование игр / 2D графика и изометрия

2001—2017 © GameDev.ru — Разработка игр