image.png917 Кб, 1200x675
Unity 3D #38 980548 В конец треда | Веб
Последние новости: релиз 6

Прошлый тред: >>960910 (OP)

Официальный сайт: https://unity.com/ru
Документация: https://docs.unity3d.com/Manual/index.html
Уроки: https://unity3d.com/ru/learn/tutorials
Форум: https://forum.unity3d.com
Магазин ассетов: https://assetstore.unity.com

На Unity сделано много замечательных игр: Zenless Zone Zero, V Rising, Hearthstone, VRChat, Escape from Tarkov, Valheim, Pathfinder, Cuphead, Genshin Impact, Subnautica, Albion Online, Endless Space, Beat Saber, Boneworks, Rust, Блицкриг 3, Pillars of Eternity, Tyranny, Kerbal Space Program и многие другие.

Главным преимуществом Unity перед другими движками является его простота для одиночной разработки. Не нужно иметь целую компанию девелоперов, чтобы сделать хорошую игру. Если ты один или имеешь небольшую команду и хочешь сделать хорошую игру без претензий на ААА, то Unity станет лучшим выбором. Тем не менее, даже крупные корпорации зачастую выбирают для своих игр именно Unity.

Какие у Unity сильные стороны?
Простота разработки, удобный инструментарий, кроссплатформенность, богатая документация, огромное сообщество.

Какие у Unity слабые стороны?
Сложность в создании фотореалистичной графики. Для графики "как в Crysis" рекомендуется взять другой движок. Хотя Unity вполне способен выдавать не уступающую любым другим движкам картинку, это требует определённого навыка от разработчика.

На каких языках я могу писать скрипты для Unity?
Поддерживается написание скриптов на C# 9.0
https://docs.unity3d.com/Manual/CSharpCompiler.html

Какие есть готовые решения для создания мультиплеерной игры?
https://www.photonengine.com
https://mirror-networking.com
https://playfab.com

На каких платформах работают созданные с помощью Unity игры?
Windows, Linux, MacOS, SteamOS, Android, iOS, Windows Phone, PlayStation4, Xbox One, WebGL, Oculus Rift и многие другие. Полный список можно найти на официальном сайте. Таким образом, игры Unity работают на десктопах, на смартфонах, планшетах, приставках, в браузерах, VR-очках и некоторых других системах.

Часто вижу скриншоты с красивой природой на Unity. Как такое создать?
Очень просто! В Unity встроены удобные инструменты для создания террейна и SpeedTree для создания деревьев и готовая реализация ветра - не нужно ничего писать или скачивать и подключать плагины - ландшафт в Unity создаётся в пару кликов.

Что нужно уметь делать для создания полноценной игры, кроме Unity-разработки?
Кроме непосредственной разработки игры на Unity, требуется также уметь создавать 3D модели (3ds Max, Blender, ZBrush), 2D рисунки (GraphicsGale, Aseprite, Piskel), текстуры (Substance Designer, NeoTextureEdit), музыку (FruityLoops, Ableton). Не обязательно учить это всё - например, в 2D играх не нужны 3D модели, а музыка необходима далеко не всегда. Также вы можете скачивать элементы для ваших игр на бесплатных сайтах. Если у вас есть деньги, то все необходимые элементы можно заказать у фрилансеров на https://www.fl.ru/ (русскоязычный) или https://www.upwork.com/ (англоязычный).

Бесплатен ли Unity?
Можно свободно скачивать, использовать и продавать готовые игры на Unity с лицензией Personal - это абсолютно бесплатно! Но на бесплатной версии при запуске игры будет появляться короткий стартовый ролик "Made with Unity", а также ваши доходы ограничены 100 000 долларов в год. Для снятия этих ограничений нужно приобретать платные версии лицензий Unity. В конечном итоге, платные варианты используются лишь крупными компаниями с огромными доходами, тогда как обычные разработчики в большинстве своём используют бесплатную Personal лицензию.

Обучение по книгам (печатные издания, актуальные электронные версии книг можно скачать на официальных сайтах издателей)

Обучение языку C# книги на русском языке:

1. C# для чайников Автор книги – Джон Пол Мюллер
2. Программирование на C# для начинающих 2е части Автор: Алексей Васильев
3. Head First. Изучаем C# 4е издание Авторы: Эндрю Стиллмен, Дженнифер Грин
4. Unity и C#. Геймдев от идеи до реализации Автор: Джереми Гибсон Бонд
5. Язык программирования C# 7 и платформы .NET и .NET Core Авторы: Филипп Джепикс, Эндрю Троелсен

Для людей абсолютно не знакомых с движком есть 3и основные книги на русском языке:

1. Разработка игр на Unity 2018 за 24 часа Майка Гейга
(Знакомство с движком, изучение редактора, создание 4х простых игр практически без кода, отличное пособие для полных новичков).
2. Изучаем C# через разработку игр на Unity. 5-е издание Харрисон Ферроне
(Пошаговое освоение всех базовых знаний по программированию на языке С# в редакторе юнити, создание одной игры стрелялки от первого лица, написание искусственного интеллекта врага, книга переведена не совсем корректно и порой встречаются не просто опечатки, а серьёзные неточности перевода.)
3. Unity в действии. Мультиплатформенная разработка на C#. 3-е межд. издание Хокинг Джозеф
(Правильное построение архитектуры кода для сложных проектов, углублённое изучение программированию на C#, создание 4х полноценных игр на движке, обязательно нужно скачать код проектов, так как в книге он местами уже устарел.)

Шапка:
Бердыев беспредел.mp4578 Кб, mp4,
1280x720, 0:03
2 980556
О, охуенно, первый (почти)

Мне кто-нибудь может объяснить, какого хуя в Юнити обновления сделаны так что я качать вынужден именно всю новую версию движка? Не как в нормальных программах где скачивается новый пакет обновления и просто устанавливается к установленной версии, а сука брать скачивать отдельно целиком новую версию, удалять старую и еще потом оптимизировать проект на старой версии под новую? Это же блять просто идиотизм какой то. Какого хуя то блять?
image.png16 Кб, 565x156
3 980565
Сделал вебсокеты, запускаю webgl билд все работает, сообщения читаются и пишутся. НО постоянно пытается сделать player connection multicast, куда-то законнектиться и получает ошибку.

Http, ws серверы запускаются в докере на 8080, 8081
sage 4 980567
Блять, тупое говно даже шапку по ссылке не смогло скопировать
image.png1 Кб, 50x43
5 980570
>>0567
терпи хуйня
image15 Кб, 676x166
6 980574
>>0548 (OP)

>На каких языках я могу писать скрипты для Unity?


>Поддерживается написание скриптов на C# 9.0


>https://docs.unity3d.com/Manual/CSharpCompiler.html


позор свой тухлый скрыть пытаются, хихихи
7 980590
Делаю перемещение игрока через
transform.Translate
с параметрами (Vector3.left Time.deltaTime _playerSpeed, Space.World); для перемещения влево.
Можно как-то ограничить движение влево размерами экрана или такое через translate не прокатит и надо по другому реализовывать?
8 980591
>>0556
было бы прикольно при обновлении движка проебывать свой проект или создавать в нем большое кол-во багов, хз
9 980592
Лента на телефоне прорекламировала хабр, и как всегда после его чтения я в печале, с одной стороны инфоцигане неправильно учать, с другой школьники который только в школе прораммировали на хабр на серьезных щах вещают что в юнити тоже "поля" а не переменные

Поэтому подбодрите и расскажите что там в новой версии
Что там в итоге то, пишут что теперь нормальный и функциональный UI делать меньше страданий, кто пробовал уже?
Сохранение/загрузку так юнити и не сделал своими функциями? Это уже просто интересно, посколкьу я знаю что нет
>>0590

>Можно как-то ограничить движение влево размерами экрана


так тебе не игрока надо ограничивать а камеру наверное, а саму камеру впринципе скриптовать чтобы за ее предел игрок выйти не мог
Ну это я с твоих слов понял что тебе надо
10 980594
>>0556
Потому что чтобы ничего не сломалось, разработчики работают в дохуя разных версиях, одновременно
К примеру старый, уже выпущенный проект который ты все еще поддерживаешь у тебя на 2019, а новый уже на 2020
11 980595
>>0594
>>0591
Неправильные ответы.

На самом деле:
1. Разработчики юнити не умеют в обратную совместимость.
2. Разработчики юнити не умеют в миграции своего же кала.
12 980601
>>0595
бля, чел, открывая свой проект, в котором работаешь уже хз сколько молишься, чтоб он нормально открылся, а тут еще обновы накатывать
13 980603
>>0592
Не, у меня камера фиксированная, плывет вперед нонстоп. Игрок управляет 3d корабликом, вид камеры сверху, двигается кораблик по x и z осям только. Управление я сделал через transform.Translate Vector3.left/right/forward/back. Но я не знаю как ограничить, чтобы игрок за пределы экрана не вылетал. Я пытался ограничить перемещение в определенном радиусе через Mathf.Clamp, но это не будет зависеть от разрешения экрана и это ограничение статичное, не будет двигаться вместе с камерой.
14 980606
>>0603

>Не, у меня камера фиксированная, плывет вперед нонстоп.


ну так тем более, хуярь на камеру колайдер, и ограничивай хоть слева хоть всю

>Игрок управляет 3d корабликом, вид камеры сверху, двигается кораблик по x и z осям только.


Не совсем понимаю почему 3д кораблик но не 2д, но поскольку z ось тебя не интересует кроме как высоты камеры, то должно прокатить
15 980608
у кого в Юнити 6 в 3д-проектах поломалось освещение - Edit - Lighting - Generate Lighting чтобы повторно сгенерить
16 980611
Внезапно в проекте на ровном месте появился баг при рисовании текстур на земле. Теперь вместо любой текстуры черные пятна рисуются.
Ничего связанного с этим вообще не менял. Просто взяло и отвалилось с ошибкой(вообще сразу с 4 только у них Соурс 0 и 1 и Дестинейшен 0 1 меняются)
"Graphics.CopyTexture source and destination have different mipmap limits. Source 1, Destination 0 UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)".

В голову пришла мысль возможно как-то пути проебались к текстурам поэтому зашел в менюшку и попытался добавить новую текстуру и тут же вылетело еще ошибок 999(! штук)

GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

NullReferenceException: Object reference not set to an instance of an object
UnityEditor.TextureInspector.OnPreviewGUI (UnityEngine.Rect r, UnityEngine.GUIStyle background) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.EditorWrapper.OnPreviewGUI (UnityEngine.Rect position, UnityEngine.GUIStyle background) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.WidePreview (System.Single actualSize, System.String s, UnityEngine.Object o, UnityEditor.EditorWrapper p) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.PreviewArea () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.OnObjectGridGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.OnGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.HostView.OldOnGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

NullReferenceException: Object reference not set to an instance of an object
UnityEditor.TextureInspector.OnPreviewGUI (UnityEngine.Rect r, UnityEngine.GUIStyle background) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.EditorWrapper.OnPreviewGUI (UnityEngine.Rect position, UnityEngine.GUIStyle background) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.WidePreview (System.Single actualSize, System.String s, UnityEngine.Object o, UnityEditor.EditorWrapper p) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.PreviewArea () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.OnObjectGridGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.OnGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.HostView.OldOnGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.IMGUIContainer.DoIMGUIRepaint () (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIR.RenderChainCommand.ExecuteNonDrawMesh (UnityEngine.UIElements.UIR.DrawParams drawParams, System.Single pixelsPerPoint, System.Exception& immediateException) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
Rethrow as ImmediateModeException
UnityEngine.UIElements.UIR.RenderChain.Render () (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIRRepaintUpdater.Update () (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.VisualTreeUpdater.UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase phase) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.Panel.UpdateForRepaint () (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.Panel.Repaint (UnityEngine.Event e) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& eventHandled) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIEventRegistration.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIEventRegistration+<>c.<.cctor>b__1_2 (System.Int32 i, System.IntPtr ptr) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& result) (at <9953c8b718944232b780cdbafb1fcd69>:0)

Ну и что и это за хуйня блядь? Попробую сейчас 6 поставить может пропадет "это"
16 980611
Внезапно в проекте на ровном месте появился баг при рисовании текстур на земле. Теперь вместо любой текстуры черные пятна рисуются.
Ничего связанного с этим вообще не менял. Просто взяло и отвалилось с ошибкой(вообще сразу с 4 только у них Соурс 0 и 1 и Дестинейшен 0 1 меняются)
"Graphics.CopyTexture source and destination have different mipmap limits. Source 1, Destination 0 UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)".

В голову пришла мысль возможно как-то пути проебались к текстурам поэтому зашел в менюшку и попытался добавить новую текстуру и тут же вылетело еще ошибок 999(! штук)

GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

NullReferenceException: Object reference not set to an instance of an object
UnityEditor.TextureInspector.OnPreviewGUI (UnityEngine.Rect r, UnityEngine.GUIStyle background) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.EditorWrapper.OnPreviewGUI (UnityEngine.Rect position, UnityEngine.GUIStyle background) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.WidePreview (System.Single actualSize, System.String s, UnityEngine.Object o, UnityEditor.EditorWrapper p) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.PreviewArea () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.OnObjectGridGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.OnGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.HostView.OldOnGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

NullReferenceException: Object reference not set to an instance of an object
UnityEditor.TextureInspector.OnPreviewGUI (UnityEngine.Rect r, UnityEngine.GUIStyle background) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.EditorWrapper.OnPreviewGUI (UnityEngine.Rect position, UnityEngine.GUIStyle background) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.WidePreview (System.Single actualSize, System.String s, UnityEngine.Object o, UnityEditor.EditorWrapper p) (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.PreviewArea () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.OnObjectGridGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.ObjectSelector.OnGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEditor.HostView.OldOnGUI () (at <0e74aaecc5d24ba79f82222a4901f731>:0)
UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.IMGUIContainer.DoIMGUIRepaint () (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIR.RenderChainCommand.ExecuteNonDrawMesh (UnityEngine.UIElements.UIR.DrawParams drawParams, System.Single pixelsPerPoint, System.Exception& immediateException) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
Rethrow as ImmediateModeException
UnityEngine.UIElements.UIR.RenderChain.Render () (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIRRepaintUpdater.Update () (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.VisualTreeUpdater.UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase phase) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.Panel.UpdateForRepaint () (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.Panel.Repaint (UnityEngine.Event e) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& eventHandled) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIEventRegistration.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.UIElements.UIEventRegistration+<>c.<.cctor>b__1_2 (System.Int32 i, System.IntPtr ptr) (at <e4aa9769bc9f4f948b09465d0a172220>:0)
UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& result) (at <9953c8b718944232b780cdbafb1fcd69>:0)

Ну и что и это за хуйня блядь? Попробую сейчас 6 поставить может пропадет "это"
17 980613
>>0606
Вот я и не понимаю как это нормально сделать коллайдером.
У меня моделька игрока или не реагирует на коллайдеры, или если добавить ей rigidbody, то начинает при столкновении отскакивать от стен и как это отключить я хз.
18 980616
>>0613
проджекет сетиингс, физикс 2д, там у тебя дерево какой слой с каким взаимодействует
ригидбоди все равно придется оставлять на кораблике
19 980617
>>0616
Звучит как фигня, ибо если все оставлять на физие движка, то как я говорил, при столкновении с коллайдером объект отскакивает от него, либо начинается дрочиться на месте, пытаясь пройти насквозь и иногда у него это получается. А мне надо, чтобы просто упирался в границу и не дергался при этом.
20 980619
>>0594
Обратная совместимость? Не не слышали
21 980620
>>0617
В настройках ригидбоди поставь массу и гравитацию в 0. Тогда он просто стопатся будет о стенку. Может ты туторы начальные какие посмотришь хотя бы, это же совсем базовый уровень.
22 980621
>>0619
Это один из недостатков которые я готов простить Юнити, хотя и считаю их редкостными пидорасами. Там хоть как проверяй, все равно где-нибудь что-нибудь наебнется
Как будто сам игры не патчил свои, и не видел во что это может перейти
23 980624
>>0621
Да, не патчил. Я изначально делал нормальные и такими чтобы в случае чего легко было все поддерживать
24 980626
Unity Learn норм тема или кал? Как стартовая точка сойдёт для вката в движок?
4545р33333.JPG60 Кб, 798x590
25 980631
Стабильный РЕЛИЗ 6.0 СМОТРИТЕ ВСЕ

> поддержки ВСКода нет.

26 980632
бля юнитихолопы реально одноклеточные
27 980633
>>0631
потому что поддержка пакетом ниже
28 980634
>>0632
Меня за подобный пост в сторону годика, но в шутливой манере и без оскорблений и ещё и с полезной инфой для спрашивающего забанили нахуй. Аккуратней
boxr.mp4209 Кб, mp4,
824x656, 0:06
29 980636
>>0620
Так в том и дело, что посмотрел, все уже поперетыкал, никакого эффекта. Если он сам по себе влетает в препятствие, то еще плюс-минус ок, объект просто дрожит, но остается на месте. А вот если его двигать в сторону препятствия, то он просто отскакивает от стены и начинает улетать в рандомную сторону.
30 980638
>>0592

> на серьезных щах вещают что в юнити тоже "поля" а не переменные


В чём они не правы? Терминология сишарпа.
31 980639
>>0626
Пойдет.
32 980640
У кого-нибудь есть положительный опыт по засовыванию юнити в сандбокс? Удалось дойти до создания проекта, но компилируется с бубном и ошибками. Годот что характерно лезет в сандбокс без проблем вообще.
33 980642
>>0640
Зачем его в сандбокс сувать вообще?
34 980644
>>0642
Ну например чтобы можно было доставать из архива и в архив без проблем, и иметь бэкап устанавливающийся одним кликом. И чтоб мусор по всему харду не расползался, и не мешал потом устанавливать старую или новую версию параллельно. Дофига для чего на самом деле.
35 980646
>>0636
Лень открывать юнити и проверять сейчас, но мне кажется у тебя проблема из-за незнания основ каких-то. Почему у тебя ускоряется кубик при подлете, а не летит как есть, в коде может херни понаписал лишней.
36 980647
>>0646
Настолько элементарные основы, что опытный гуру вроде тебя не знает что с этим делать.
2024-10-20 22-11-46.mp41,8 Мб, mp4,
1920x1080, 0:27
37 980648
>>0647
Я не гуру, а новичок: пару месяцев юнити открыл только. Is kinematic на стене включи и в ригидбоди на 0 всё поставь как на видео, а то оно вверх будет ползти при столкновении.
Олсо тебе проще делать, чтобы всё не двигалось, а стояло на месте и по краям "стенки" поставить для объекта игрока. А фон пусть сам там движется - так проще будет.
38 980649
Лучше скажите как в юнити можно дороги делать для города, попробовал много способов, но все они каловые, блять
39 980650
>>0649
Терпи.
40 980652
>>0590
Вычислить координаты краев экрана, при выходе за них ограничивать. В гпт вбей.
boxd.mp4276 Кб, mp4,
824x656, 0:08
41 980653
>>0648
Спасибо анончик, хз что именно помогло, еще снял флаги с автоопределения центра масс и куб перестал улетать. Но все еще есть другая проблема: если зажимать клавишу, куб может проникнуть сквозь коллайдер, причем только в одну сторону, обратно он трясется, но не возвращается. Пробовал менять Collision detection, как пишут в некоторых гайдах, но все без толку.
Что до движения фона, я хотел сделать сложный фон с движущимися по нему объектами. Тянуть разом кучу объектов на экране вместо движения одной модельки так себе затея как по мне, тем более, что в такой ситуации будет непонятно как синхронизировать движение фона с движением объектов на нем.
42 980657
>>0653
Двигай через rigidBody.MovePosition
43 980660
>>0653
По идее без разницы зажимаешь ты клавишу или через translate pos постоянное движение дается. У тебя Inertia Tensor единички стоят, попробуй на 0 поставить.
Олсо, подписан на одного геймдева и поглядываю, чего он творит, т.к. идея игры его немного схожа с моей
https://www.youtube.com/@madcookiesstudio
У него там 3д фон процедурный генерится и удаляется в пределах обзора камеры(конкретное видео сейчас не могу найти). Хз как он это реализовал, я не вникал, но похоже на твою идею с 3д фоном.
44 980666
>>0638
Почитай документацию юнити, они об этом очень анальны. так же как и анриал кстати
45 980675
>>0666

> Почитай документацию юнити, они об этом очень анальны.


Что?
46 980683
Можно как-то гонять юнити без установки вижуал студио? Просто ненавижу эту опердень за размер и навязывание аккаунта МС. Жыдбрейнс тоже не пойдет ибо хрен теперь нормально поставишь.
47 980685
>>0683
vscode
48 980705
>>0683
Можно. Просто не ставишь вижуал студию и всё.
49 980739
>>0683
ставишь vs code и плагины шарповские, юнитёвкие - где-то гиг может два всё вместе будет весить
50 980745
>>0683
Для разработки в юнити у тебя буквально два стула - райдер или студио. Всё блять, больше нихуя нет у тебя выбора. Вскод для юнити это не серьезно. Вообще если ты не осилил программу поставить, куда ты в геймдев лезешь?
51 980749
>>0745
да ладно тебе, нормально вскод переваривает все, ну если ты меркуриал не используешь только.
52 980754
>>0749

>вскод


Пробовал его пару раз в течение нескольких лет, работать вообще не возможно если брать в сравнение со студией.
53 980755
>>0754
что значит невозможно ебучий ты шизоид? ты можешь нормально описать проблемы?
54 980762
>>0755
2 главных проблемы.

1. Начиная писать что либо вскод не показывает кучу вариантов что можно прописать как в студии.
2. Вскод не показывает кол-во вызовов функций, и откуда они вызываются.

И да я ставил расширение от юнити и c# специально. Тупо нерабочий кал.
55 980763
>>0762

>1. Начиная писать что либо вскод не показывает кучу вариантов что можно прописать как в студии.


>2. Вскод не показывает кол-во вызовов функций, и откуда они вызываются.


буквально надо плагины ставить, а чтобы посмотреть вызовы функции надо ктрл зажать и кликнуть по ней
56 980764
>>0763
Нахуй пошел со своими фантазиями гнида, иди маняфантазируй в другом месте.
image.png32 Кб, 276x352
57 980767
>>0764
хех, найс тупое животное порвало, вот это поставь и убедись сам
ангуляр можешь не ставить если ты дебил не понял
58 980768
>>0767
Где плагин юньки? А? А? А? Кого наебать решил? НАХУЙ ПОШЕЛ
3 .mp41,4 Мб, mp4,
854x480, 0:11
59 980769
>>0768
хорошо же я тебя проткнул...
60 980770
>>0749
Какой смысл в блокноте с костылями вместо полноценной ide с прямой поддержкой со стороны юнити?
61 980801
>>0745

>если ты не осилил программу поставить


Я ее поставил. А недавно виндовс снес, и с тех пор наслаждаюсь тем что система запускается за 10 секунд а не за 100, и каждый раз когда отхожу на 5 минут это ебучее студио не дрочит диск, пытаясь проверить обновления или что у него там. Ну ладно райдер так райдер, буду искать торрент.
62 980808
>>0801
Какие-то странные вещи рассказываешь, и вижуал студия тут не при чем.
63 980811
Не подскажете, где искать семплы проектов на unity, желательно разных жанров?
64 980818
>>0811
Где угодно, главное не на гитхабе, вбив в поиске "unity"
65 980822
Где я сру себе в штаны?

Мне надо получить ответ от сервера и обновить хп юнитов на сцене.

У меня висит обработчик пик 1 на вебсокет неймспейсе. Все что он должен делать это брать байтики и перекладывать их в протобаф структуру. Но какого-то хуя я ловлю пиздец на пике 2.

Скорее всего какой-нибудь датарейс поймал, но где я вообще хз. Роутер ивентов неймспейс => обработчик на пике 3. Я уже и Syncronize() добавил и в буфер перекопировал. Сам роутер под синкмапой.
66 980823
>>0822
Я вкатун и просто хочу сделать свой кликер, помогите пожалуста.

Вот ссылка на файл с кодом и там вся репа в принципе:

https://gitlab.com/qiwik0805/clicker-game/-/blob/dev/MI-4/Assets/Scripts/Runtime/App/Server/WS/BotMatch/GetBotMatchUpdate.cs?ref_type=heads
67 980827
>>0822
Лул, эпик фейл, на сервере когда мапил сущности создал себе массив с длиной, а не капасити 2
изображение.png5 Кб, 281x97
68 980829
Сап, хотел в коде прописать чтобы ждал 9 секунд прежде чем остальную часть кода выполнял, но он нихуя не ждет
filth laugh.mp41,3 Мб, mp4,
1280x544, 0:09
69 980830
70 980831
>>0829
Ты на приколе? Или это троллинг треда?
71 980832
>>0822
Надеюсь ты знаешь что вебгл сингл тхреад онли
72 980833
>>0832
Делал выделенный сервер на GameNetObjects с кучей потоков и асинхронностью, проблем 0.
73 980836
>>0832
Теперь знаю, но у меня же тут конкурентность и не числодробилка
74 980838
>>0833

>проблем 0


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

>GameNetObjects


?
17088597230310.mp43 Мб, mp4,
720x1280, 0:11
75 980839
анальнички, веб гл ВСЁ, настала эпоха веб гпу, кстати насколько там всё пиздато щас?
76 980841
>>0838
1. Netcode for Entities
2. Netcode for GameObjects
3. Multiplayer Tools
Забыл там же переименовали, вот то что используется.

>И причем тут асинхронность, ясен хуй асинхронность будет работать в любом случае.


Асинхронность прямо связана с потоками пчел, или как по твоему в разных тредах выполняется коннект с разными игроками? Я же специально выделил что сервер "выделенный", там до десяти тысяч коннектов одновременно.
77 980842
>>0841
Асинхронность всего лишь означает, что код не блокирует основной поток. Это как с корутинами. Каждый апдейт происходит опрос состояния. Чтобы получить ответ от сервера, тебе не нужно блокировать поток, тебе всего лишь нужно каждый апдейт опрашивать канал на наличие данных. И всё это происходит в рамках одного потока.
78 980844
>>0842
Нифига, там по максимуму все потоки забиты, еслиб был один поток он здох уже наверное на сотне игроков или даже раньше. Так что мимо пчелик.
79 980848
>>0844
Какой же ты ебанат блять. У тебя понятия абстрагированы, что такое поток вообще не ебёшь.
80 980851
>>0829
Гугли корутины
81 980853
>>0844
Чел, асинхронность - это абстракция над задачами которые ЯКОБЫ выполняются параллельно. Будет ли там реально отдельный поток или нет - для асинхронности не важно, это уж как тв сделаешь так и будет.
изображение.png53 Кб, 1083x380
82 980854
>>0851
Да уже, ктож знал что юнити все таймы от апдейтов мерит
все отрабатывает кроме выставление цвета,
83 980856
>>0848
>>0853
Челы без обид, но нах вы лезите туда чем не пользуетесь? У меня реальный кейс работы, у вас какие-то маняфантазии на уровне чтения документации без реального опыта.

Просто повторю еще раз, если бы я был не прав, сервак сдох бы на первой сотне человек, ну или пинг у людей был в секундах. А так +- 150мс задержка при одновременном коннекте до 1к людей. Если что это 3д игра по типу раста.
84 980859
>>0856

> Челы без обид, но нах вы лезите туда чем не пользуетесь? У меня реальный кейс работы, у вас какие-то маняфантазии на уровне чтения документации без реального опыта.


С чего ты взял что не пользуемся?

Ты хоть прочитай что тебе вообще пишут, никто не отриуает что твой сервак многопоточный.
Но у тебя проседает понимание того что есть асинхронность в си шарпе. Если ты не понимаешь в каком слусае асинк будет в отдельном потоке, а в каком нет, то ты:
1. Просто в какой-то момент обосрёшься и не будешь понимать почему асинки все в одном треде
2. Не сможешь пользоваться асинками в клиентском юнити коде, что тожн очень мощная возможность, только вот для этого у тебя все асинки в мейн треде должны быть.
85 980865
>>0856
Ну ты реально прекол, какая связь между количеством клиентов и многопоточностью клиента? Нету ее нахуй. Сервер в одном батче может отправить хоть миллион положений трансформа, в одном потоке блять.
86 980867
>>0859
>>0865
Ребят я вас понял, можете дальше маняфантазировать как и что должно работать, но у меня работающий сервер, а не просто фантазии как и что должно работать.
Я рад за вас что в ваших фантазиях весь неткод работает в одном потоке, и что 4гц сервак с 6 ядрами и 12 потоками использует лишь 1 поток, да, очень верю, и люди играющие на сервере верят.
Удачи вам с такими познаниями.
87 980869
>>0867
А, так ты реально читать не умеешь просто. Рекомендую научиться, полезный навык.
Screenshot88.png25 Кб, 831x305
88 980871
Сап. Перехал из говнодота.
Подскажите как организовать ожидание в юнити. В тупорылом говнище для вокнутых долбоебов которые долбят друг друга писюнами в очко между крашами движка можно было просто написать асинк вызов функции, как организовать подобное в юнити с минимальным кол-вом кода?
89 980872
>>0867
Ты тролешь чтоле? Сука, когда мы вообще про сервер начали говорить. Или у тебя сервер на юнити вебгл крутится? Ты идиот?
90 980873
>>0871
Способ с твоего скрина будет работать и в юнити.

Но лучше использовать на Task, а UniTask
https://github.com/Cysharp/UniTask

Альтернативный вариант - использовать корутины
https://docs.unity3d.com/Manual/coroutines.html
91 980874
>>0871
самый простой способ - Coroutine
92 980875
>>0871
Абсолютно также можно.

Юнитаск лучше, т.к. есть такая специфичная штука - обычные таски могут жить ВНЕ плеймода. Т.е. ты нажимаешь выстрел, выходишь из плеймода, и код продолжается.
А юнитаски сразу стопаются когда из плеймода выходишь.

Плюс у юнитасков околонулевые аллокации.

>>0873
>>0874
Нахуй корутины, если чел знаком с асинком то лучше сразу расчехлять юнитаск.
93 980876
>>0875
ты ещё забыл про красивый дебагер в котором видно все запущенные таски
94 980891
>>0548 (OP)
Юнити 6 кто-нибудь ставил уже? Вроде там обнов не особо много интересных и лучше на старом проверенном сидеть, я ведь прав?
95 980893
>>0891

> Вроде там обнов не особо много интересных


Много, просто пиздец как

>и лучше на старом проверенном сидеть


есть такое

>Юнити 6 кто-нибудь ставил уже


Тут люди не особо используют юнити
96 980896
>>0891
Я с него начал, хз что было до Unity 6.
97 980904
>>0891
Смотря с какой целью. Скорее всего если задаешь такой вопрос - стоит поставить юнити 2022 лтс.
98 981147
asmdef это шутка какая-то или что? Я как еблан должен файлы раскладывать по всему проекту, чтобы ебучие юнит тесты запустить?
99 981149
Замена этим вашим корутинам.
Например, надо подождать 7 секунд. Легко:
var current_time = Time.time;
while (true)
{
If (Time.time - current_time > 7) {break}
}
//Код здесь выполнится через 7 секунд, отвечаю.

Ладно, шучу. А если серьезно, то почему этот код работать не будет?
image546 Кб, 850x850
100 981150
>>1149

>Ладно, шучу. А если серьезно, то почему этот код работать не будет?

101 981153
>>1149
Что за треш ты родил?

float MyTimer = 7f;
MyTimer -= Time.deltaTime;
if(MyTimer<=0) { MyFunction(); gameobject.setActive(false); }
102 981154
>>1153
Это если в update запихать код будет работать. А если я хочу например в Start()?
103 981155
>>1154
Используй корутины или async.
104 981171
>>1155
Пиздец.
Либо шуток не понимают.
Либо посты до конца не читают (где я написал что это шутка)
Либо это gpt отвечает.

В любом случае, отпало желание что либо тут спрашивать.
105 981178
>>1171
Это кто у нас такой охуенный клоун? Рядовой Шутник, а? Съеби отсюда нахуй, дебилёнок.

>отпало желание что либо тут спрашивать


ЗАШЁЛ ПОШУТИТЬ
@
БЫЛ ПОСЛАН НАХУЙ
@
АРЯЯЯЯЯЯКАКОЙ ПЛАХОЙ ТРЕД!!!!!
106 981182

>gpt


Я являюсь gpt на этой доске для поднятия постинга.
Шутка. Я человек как и вы.
107 981192
>>1178
Нет, истина в том, что тебя корежит от того ты принял это всерьез )) ну ты такой всегда по жизни))
108 981199
Делаю уровень с небоскребами и столкнулся с такой проблемой.
Как правило камера нормально проезжает мимо объектов, отображая их на экране до тех пор, пока он не скроется из виду. Но иногда, видимо зависит от ракурса, объект перестает отображаться раньше времени и кусками становится прозрачным. Можно ли это как-то пофиксить?
109 981213
>>1147
Нахуя? Просто погугли как реф на другой асмдеф добавить
15474096006440.jpg116 Кб, 768x1024
110 981219
Поясните принцип работы ебаного InputField, кто знает.
Вот я создал InputField (плейсхолдер и текст уже внутри него) и приделал к нему такой скрипт:

public Text inputText; // размещаю здесь объект Placeholder
public Text namePlayer1; // размещаю здесь объект Text

void Start()
{
inputText.text = "Ivanov_1"; // задаю стартовое значение, оно выводится сразу в плейсхолдере на старте
}
public void SetData() // на этот метод ведут обе кнопки с инпутфилда (при изменении в строке ввода и при выходе из нее)
{
namePlayer1.text = inputText.text; // присваиваю выводимому тексту, значение того, что печатается в поле ввода
inputText.text = namePlayer1.text; // добавлено, т.к. без этого при стирании всех символов, автоматически (с какого-то хуя) появляется надпись заданная еще в старте - "Ivanov_1", хотя ее уже сто раз могли перезаписать
}

Теперь, что я недогоняю. Вот у меня в начале выводит "Ivanov_1" и я хочу его дописать, например до "Ivanjv_1990". И нихуя, курсор прыгает в начало строки и типа затирай все нахуй и пиши заново. Причем после того, как я это написал все без проблем, блять работает. Ставь курсор и правь где надо. Но, сука, не на старте - на старте курсор, хуй поставишь. Только переписать все заново
Я пытался просто вставить в старт работающий в SetData() код
namePlayer1.text = inputText.text;
inputText.text = namePlayer1.text;
, но в старте он нихуя не работает и просто выводит в строке нихуя.
Попытка вбить код таким методом, в старте тоже нихуя не дает namePlayer1.text тупо остается = ""
namePlayer1.text = "Ivanov_1";
inputText.text = namePlayer1.text;

В целом, я понимаю, что тот пидорас кто писал этот код для редактора хотел все автоматизировать, но, блять, не методом же поломки алгоритма? Какого хуя один и тот же код не работает в двух разных местах и как это обойти, блять?
15876718121080.jpg248 Кб, 1837x2528
111 981237
>>1219
вообщем, нашел сам - в методе Старт
нужно писать:
GetComponent<InputField>().text = inputText.text;
namePlayer1.text = inputText.text; - не срабатывает с какого-то хуя для компонента в инпутфилд, а только для namePlayer1, там остается пустое место и курсор встает в начало строки

Тогда текст пропишется и в компоненте InputField и в namePlayer1.text . И можно будет ставить курсор в нужное место стартового имени.

Причем, уже в методе SetData() все прекрасно работает и
namePlayer1.text = inputText.text; меняет текст в обоих местах, как и нужно, а не только у себя. Это явный косяк юнитеков, ебал их рот (в этом конкретном случае).
15341223767730.jpg196 Кб, 853x1137
112 981256
>>1237
В итоге все работает, но заметил, что при выделении всего или части Имени курсором и затем удалении его при помощи кнопки Delete или Backspace, удаленный текст иногда остается, хотя курсор и прыгает в начало строки. И нужно начать писать текст или щелкнуть курсором в другой части экрана, чтобы он исчез. Причем это срабатывает через раз и я не вижу логику почему так происходит.
113 981258
>>1237
Нет у них косяков, ты что тотнамудрил.

Кидай полностью код какой был и каеой стал
114 981267
>>1258
Вот код, жирным строка которую добавил, т.к. код namePlayer1.text = inputText.text; работающий в методе
SetData(), в старте не работает.
namePlayer1.text остается всегда равным ""

public Text inputText; // размещаю здесь объект Placeholder
public Text namePlayer1; // размещаю здесь объект Text

void Start()
{
inputText.text = "Ivanov_1"; // задаю стартовое значение, оно выводится сразу в плейсхолдере на старте
GetComponent<InputField>().text = inputText.text;
}
public void SetData() // на этот метод ведут обе кнопки с инпутфилда (при изменении в строке ввода и при выходе из нее)
{
namePlayer1.text = inputText.text; // присваиваю выводимому тексту, значение того, что печатается в поле ввода
inputText.text = namePlayer1.text; // добавлено, т.к. без этого при стирании всех символов, автоматически (с какого-то хуя) появляется надпись заданная еще в старте - "Ivanov_1", хотя ее уже сто раз могли перезаписать
}
}
115 981295
Вообще мне хочется найти работу, зря я юнити что ли много лет тыкаю, но реально интересно, насколько там реально отличается код/архитектура от того как я пишу. Такое чувство, что на первом рабочем дне открою исходники, увижу какое там охуенное архитектурное исполнение и затревожусь, что это выше моего уровня и что я своими рученками все испорчу.

Есть конечно вариант похуже, лапша от предыдущих 100 разрабов до меня. Но это хотя бы испортить не жалко, там видимо упор будет именно на исполнение поставленной задачи, архитектуру от меня требовать наверное не будут, главное чтобы тесты выполнились.

Короче хз, может кто посоветует открытые репозитории, мне для ознакомления , близкие к среднестатистическому исполнению кода?

Я вот нашёл один такой https://github.com/jynew/jynew/tree/main есть релиз в Стиме, для инди результат хороший, все довольны
116 981297
>>1295
Написано так себе, причём шизом, не стоит на это ориентироваться(именно с точки зрения программирования)

> Короче хз, может кто посоветует открытые репозитории, мне для ознакомления , близкие к среднестатистическому исполнению кода?


Ниче нету. И исполнение с архитектурой сильно варьируются в зависимости от компании(в ИП Васян если не повезёт то может быть любое говно, самое страшное, что ты только можешь себе представить даже близко не опишет масштаб катастрофы).

Правило в целом такое - если ты смог сделать игру от начала до конца, то ты либо уже можешь идти работать, либо не очень далёк от этого.
Можешь смело откликаться на вакансии и смотреть чё будет, после собеседований смотреть что надо подтянуть. Плюс посмотри видосы по собеседованиям вроде этого мок собеса https://youtu.be/yP9rZt501kI
Это не на ждуна, но тоже будет полезно.

А так в целом сложнее на собес попасть, чем работать, лол.
117 981299
>>1297

>страшное, что ты только можешь себе представить


Заинтриговал. Например?
118 981300
>>1299
Ну что получается когда на качество кода поебать либо не хватает квалификации, при этом нету контроля, а кабан кабаныч просит фичи поскорее. И это приправить сменой разработчиков.

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

Ещё бывает когда кто-то неопытный тащит какое то говно в проект не зная как с ним работать и времени изучить не хватает потому что надо пилить фичи, там бывают всевозможные кривые реализации MVx паттернов, ивент бассы, хуевое использование DI и сервис локатора, ну и само собой разумеющееск использование крутых слов и странных где не надо - провайдеры, сервисы, фасады, контроллеры, вью, менеджеры, адаптеры, когда оно этим не является или когда оно не нужно.

Своими глазами не видел, но боюсь ту самую мемную архитектуру на СО тоже кто-то использует...
119 981304
>>1300
Нет, это все специфика работы, и ничего страшного в этом нет
Хуево, когда ответственный за проект знает шарп парадигмы или еще какую то хуйню, но не знает юнити или даже как апдейт работает. И в лучшем случае идут изобретание велосипедов, в худшем изобритания велосипедов+не использования функционала
kartracing.jpg594 Кб, 2560x1707
120 981312
Делаю гонку, посоветуйте пожалуйста пак звуков мотора и музыки для саундтрека.
Буду благодарен если посоветуете уроки по созданию гонки.
Купил данный курс:
https://www.udemy.com/course/kart-racing
На мой взгляд в нем есть практически все, что нужно для начинающего разработчика мультиплеерных гонок (кроме реализации спидометра).
121 981318
>>1312

>Купил данный курс:


ясно понятно нахуй путешествуй
122 981322
>>1312
freesound
123 981323
>>1318
На Рутрекере его не нашел.
>>1322
спасибо
124 981358
>>1300

> кабан кабаныч


Поэтоум в идеале Кабаном Кабанычем должеть быть сеньор, который в свое время пожевал говна и знает, как оно все на самом деле может быть, поэтому обладает определенным набором эмпатии и потому должен хотя бы немного контролировать, чтобы архитектура шла в правильном/менее болезненном направлении
125 981362
Вот серьезно.
Я не работал в геймдеве, хотя хочется (хоть казуалки пилить, хоть порнуху, все равно кроме этого мне больше ничего не интересно), но меня пугает именно торопливость, дедлайн и прочее.
Я, работая над своей игрой (которую доделал) иногда над какой-то проблемой мог сидеть неделю. Вскрываются, так сказать, непредвиденные проблемы.

В вакансиях пишут, чтобы чел мог "трезво оценивать" свои сроки.
Другие пишут, как из-за дедлайна сидят ночами и стрессуют.
Торопливость приводит к тому, что программисты вынуждены городить лапшу, чтобы сделать побыстрее.

Да бля, программирование - это же не картошку копать, где ты знаешь длину картофельного поля, свою скорость и можешь примерно рассчитать затраченное время на калькуляторе.

Поэтому здорово наверное работать в таких компаниях, где сроки не имеют особо значения, точнее нет конкретного плана уложится в такое-то время. Поэтому в идеале - это когда Кабан Кабаныч просто хочет воплотить свой проект в жизнь, и больше заинтересован в том, чтобы проект просто вышел, пусть на два-три года позже, но он уверен что окупится, да и вообще проект для него хобби, а не реально материальное обеспечение
8.mp4289 Кб, mp4,
480x360, 0:05
126 981364
>>1362

>Поэтому здорово наверное работать в таких компаниях, где сроки не имеют особо значения, точнее нет конкретного плана уложится в такое-то время.


хуя дебил
127 981401
Эх как же хочется работать в валв, и пилить третью халву двадцатый год подряд и никто не стоит на душой, а Гейб Кабанович где-то в Зеландии и ему похуй, ведь Стим приносит деньги, а игры так, для души
128 981404
>>1401
Гейб Кабанович вроде как целыми днями в ВоВ задротит. Наверняка он всю жизнь завидовал близзардам... Сейчас пытается это компенсировать через захват игрового рынка.
129 981408
>>1405 (Del)

>разогнали всех разноцветноволосых в итоге


Этот тот конкорд, который 8 (восемь) лет пилили? А их потом все разогнали? Пиздец, у них там жестко со сроками. Вот российский кабан кабаныч их только лет через 12 бы разогнал, а то и через 15
16399120362830.png1,9 Мб, 700x700
130 981414
>>1410 (Del)
А когда у нас когда кредиты давали под 7% у нас прям гд-рай что ли был? В РФ геймдев очевидно не очень работает пока и держится на инди, да и то так себе, посмотрим правде в глаза.
Но странно сейчас про него вспоминать, когда 25% появилось сегодня. Я выше где-то писал, что у нас норм с этим всё что ли или к чему ты тут 25 приплёл вообще?
131 981415
>>1412 (Del)

>либо хотя бы на мобилки уходить андроиды или айфоны


Ну, на мобилки самое то уходить, с учетом того, что там все решают бюджеты на рекламу. И ты заранее в проебе западному кабану и по объемам доступных кредитов на траффик и по их цене. Такое себе в общем решение
132 981417
>>1415

>все решают бюджеты на рекламу


Ну да, тут верно. А странно, что тут обсуждение идёт, а не в общем. Причём тут юнити-то?
133 981418
>>1414

> к чему ты тут 25 приплёл вообще?


К тому, что кабан взявший в банке под 25% на разработку, шкуру будет спускать со своих подчиненных разрабов даже за возможное затягивание сроков. И в таких условиях искать нормального понимающего кабана - это надо быть долбоебом
134 981419
>>1417
юнити почти ни при чем, просто тред почти мертвый и чел спросил, почему за сроки так ебут
135 981420
>>1418
Неужели работать будет просить и зп отрабатывать? Кошмар какой
136 981422
>>1419

>просто тред почти мертвый


Ну это да. Я работаю вот сейчас и попиливаю игрушку, но когда вопрос возникает, то мне проще в гугле найти решение проблемы, т.к. их сотни уже таких вопросов либо у гпт спросить. А тут хз чего спрашивать. В других тредах и движках (не буду говорить в каких) спрашивают всякую ерунду, но у них документаций меньше и тредов на сторонних форумах меньше, наверное.
А свой прогресс мне проще завтра в субшоте выложить, чем тут.
137 981425
>>1358
Ну тут когда как. Кабан кабаныч может быть и годным управленцем
138 981427
>>1362

> В вакансиях пишут, чтобы чел мог "трезво оценивать" свои сроки.


Скорее всего это "ИП Кабан Кабаныч".

Сроки выполнения отдельных тасок оценивает либо лид, либо команда на покере планирования, либо их вообще нет.
Если на тебе ответственность за оценку задач и ты обычный разраб - значит процессов в компании нет, а работают там(в том числе на руководящих постах) не особо квалифицированные ребята.

Если задачи эстимейтстся с точностью до часов и за дедлайны ответственность на разрабах - значит тоже компания говно и руководство шизы.

> Другие пишут, как из-за дедлайна сидят ночами и стрессуют.


В целом даже в гавне всяком с орущим кабанычем больше 8 часов в день работать нет необходимости как правило, если только там не шизы в руководстве, но с шизами в руководстве компания долго не протянет(за некоторыми исключеничми)

> Да бля, программирование - это же не картошку копать, где ты знаешь длину картофельного поля, свою скорость и можешь примерно рассчитать затраченное время на калькуляторе.


> Поэтому здорово наверное работать в таких компаниях, где сроки не имеют особо значения, точнее нет конкретного плана уложится в такое-то время.


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

И ты как разработчик должен осознавать эти две крайности - хуяк и в продакшен и делать качественно чтобы потом не охуевать

>>1364
Такое бывает пчел

мимо 2 работы, 400к
139 981428
>>1418
Не надо идти туда, где кабаныч кредит взял и нихуя не понимает что делать, это же очевидный ред флаг.

Надо идти только в продуктовые компании, которые делают свои игры и уже нормально живут с них, а не на кредиты.
140 981429
>>1428
Изи мани с кабанчика лоха.
141 981430
>>1427

>мимо 2 работы


Ты на двух работах всего поработать успел или сейчас одновременно на двух работаешь?
142 981431
>>1430
Да
143 981443
>>0548 (OP)
Привет всем, у меня вопрос по поводу unity shader graph. Unity 3d у меня версии 2022.
Какая проблема?
В неправильном отображении Normla Map под разными ракурсами.
Как вы можете увидеть, стандартный lit материал отображает normal map правильно (трещины), но в shader graph фиг пойми как.
Sample texture у меня стоит normal map (tangent) Пробовал так же инвертировать каналы (r и g через ноду Plip)
Кучу всего пробовал и безрезультатно. Быть может кто -то из вас сталкивался с такой проблемой и её решил.
144 981444
>>1427

>Сроки выполнения отдельных тасок оценивает либо лид, либо команда


Что за хуйня, может если у каких нибудь ипешников которые делают софт для компаний из двух человек. Лид на проектах занят более важными вещами, чем марать руки о загрузку говнокоддеров, по крайней мере до того момента когда они действительно вафлить начинают и тормозят все всем
Для этого всегда и во всех нормальных компаниях отдельный человек, который еще и отстаивает эти сроки перед заказчиком и перед нанятыми ебанатами оутсорсерами типа тебя. И кстати оценать свои временные затраты на задачу хоть как-то, это все равно уровень джуниора, и хз что вы пишете что это не картошку копать и невозможно
145 981450
>>1430
Одновременно на двух

>>1444
Чтобы оценить время выполнения задачи в любом случае нужен человек шарящий в соответствующей области и конкретном проекте. Никто кроме разработчика сидящего на проекте не сможет прикинуть сколько времени примерно займет та или иная фича.

Чел который помогает команде с оценкой задач и чекает примерно адекватность происходящего тоже бывает(или пм, или скрам мастер).

> и отстаивает эти сроки перед заказчиком и перед нанятыми ебанатами оутсорсерами типа тебя


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

> И кстати оценать свои временные затраты на задачу хоть как-то, это все равно уровень джуниора, и хз что вы пишете что это не картошку копать и невозможно


Любой тебе "хоть как-то" оценит, но всегда будут неточности.
146 981460
>>1199
Разобрался.
147 981469
Почему Юнитеки с упорством сумасшедшего продолжают называть свойства с маленькой буквы? При этом в новых кодовых пакетах они называют свойство с большой буквы, как и должно быть в C#. У них там раздвоение что ли.
148 981470
>>1469
Да.
149 981495
>>1469

>свойство с большой буквы, как и должно быть в C#


ты скозал? даже сами майки это правило не соблюдают, всем похуй
150 981511
>>1443
умножать на -1 пробовал?
151 981513
>>1495

>не соблюдают


>всем похуй


Буквально во всём дотнете, во всех популярных сторонних библиотеках следуют стандарту PascalCase, но тут у нас дурачок отрицает реальность. Пиздец. Видимо основу юнити закладывал такой же имбецил. Для тебя и переопределение оператора "==" норма наверняка (хотя ты наверное даже об этом не знаешь, ты же даун).
152 981516
>>1513
Этот базарит, отвечаю.
Три года пилил игру, да что то нихуя прогресса не было, потом понял, что_писал_неправильно, и в итоге НачалПисатьВотТак - и вот что я в итоге - дела сразу пошли в гору, процесс пошел быстро, релизнулся в стиме, 10000 положительных отзывов.
Думайте.
153 981561
>>1513
Тоже начал с большой буквы писать, теперь все мужики руку жмут.
154 981565
>>1469
Сишарперы вообще ебанаты сумасшедшие с 25 разными видами написания названий.

+ Кстати раздражает, что сокращения пишутся votTak и получается Uc, Vm и прочий кал
155 981596
Вопрос по реализации вращения персонажа.
Если у нас персонаж это 3д кораблик в игре с видом сверху, то при перемещении в стороны он должен поворачиваться вокруг своей оси, а при отжимании клавиши возвращаться в исходное положение.
С одной стороны это проще всего реализовать через Rotate, но это нужно будет постоянно отслеживать его последние координаты, будет поворачиваться его коллизия и т.д. Может это можно сделать анимацией какой нибудь? Целесообразно ли это или лучше просто ебануть rotate и не париться?
156 981617
>>1596
Через ротейт делай.
Если надо чтобы коллизия по какой то причине не поворачивалась, сделай ее в родительском объекте, а модель в дочернем и вращай дочерний
157 981622
>>1443
В общем, вы вами ничего не знаете
sage 158 981625
>>1622
Просто unity 3d говно.
Перешел бы давно на богоподобный unreal engine, там такой хуйни нету.
159 981712
>>1625
Я так и понял
160 981748
Как вам новый цветовой дизайн в Юнити шесть тысяч? Лично я бы за такое бил палкой до смерти. Резкие чёрные переходы между серыми панельками это пиздец. Хотя может на вин 11 оно лучше, судя по последнему скрину, но на десятки оч всрато.
161 981749
>>1748

>палкой до смерти. Резкие чёрные переходы между серыми панельками это пиздец.


Объясни почему. Я не вижу ничего страшного.
162 981750
>>1748
есть только светлая тема
163 981756
>>1750

>светлая тема


ну, за такое сразу на плаху...
164 981774
эвэитблом пользуется хоть кто-то?

using UnityEngine;
using System;
using System.Linq;

using Random = UnityEngine.Random;

public sealed class SpawnTest : MonoBehaviour
{
[SerializeField] GameObject _prefab = null;

[field:SerializeField] public int BatchSize { get; set; } = 100;
[field:SerializeField] public int BatchCount { get; set; } = 30;
[field:SerializeField] public float TimeSlice { get; set; } = 2;
[field:SerializeField] public float Interval { get; set; } = 1;

int TotalCount => BatchSize BatchCount;

async Awaitable WaitInterval()
=> await Awaitable.WaitForSecondsAsync(Interval);

async void Start()
{
AsyncInstantiateOperation.SetIntegrationTimeMS(TimeSlice);

// Position/rotation array
var range = Enumerable.Range(0, TotalCount);
var pos = range.Select(x => Random.insideUnitSphere
10).ToArray();
var rot = range.Select(x => Random.rotation).ToArray();

await WaitInterval();

// Simple spawn test
var spawned1 = new GameObject[TotalCount];
for (var i = 0; i < TotalCount; i++)
spawned1 = Instantiate(_prefab, pos, rot);

await WaitInterval();

// Cleaning up
foreach (var o in spawned1) Destroy(o);

await WaitInterval();

// Batch spawn test
var spawned2 = new AsyncInstantiateOperation<GameObject>[BatchCount];
for (var i = 0; i < BatchCount; i++)
spawned2 = InstantiateAsync(_prefab, BatchSize,
new Span<Vector3> (pos, i BatchSize, BatchSize),
new Span<Quaternion>(rot, i
BatchSize, BatchSize));

// Completion
for (var i = 0; i < BatchCount; i++)
while (!spawned2.isDone) await Awaitable.NextFrameAsync();

await WaitInterval();

// Cleaning up
for (var i = 0; i < BatchCount; i++)
foreach (var o in spawned2.Result) Destroy(o);

await WaitInterval();

Application.Quit();
}
}
164 981774
эвэитблом пользуется хоть кто-то?

using UnityEngine;
using System;
using System.Linq;

using Random = UnityEngine.Random;

public sealed class SpawnTest : MonoBehaviour
{
[SerializeField] GameObject _prefab = null;

[field:SerializeField] public int BatchSize { get; set; } = 100;
[field:SerializeField] public int BatchCount { get; set; } = 30;
[field:SerializeField] public float TimeSlice { get; set; } = 2;
[field:SerializeField] public float Interval { get; set; } = 1;

int TotalCount => BatchSize BatchCount;

async Awaitable WaitInterval()
=> await Awaitable.WaitForSecondsAsync(Interval);

async void Start()
{
AsyncInstantiateOperation.SetIntegrationTimeMS(TimeSlice);

// Position/rotation array
var range = Enumerable.Range(0, TotalCount);
var pos = range.Select(x => Random.insideUnitSphere
10).ToArray();
var rot = range.Select(x => Random.rotation).ToArray();

await WaitInterval();

// Simple spawn test
var spawned1 = new GameObject[TotalCount];
for (var i = 0; i < TotalCount; i++)
spawned1 = Instantiate(_prefab, pos, rot);

await WaitInterval();

// Cleaning up
foreach (var o in spawned1) Destroy(o);

await WaitInterval();

// Batch spawn test
var spawned2 = new AsyncInstantiateOperation<GameObject>[BatchCount];
for (var i = 0; i < BatchCount; i++)
spawned2 = InstantiateAsync(_prefab, BatchSize,
new Span<Vector3> (pos, i BatchSize, BatchSize),
new Span<Quaternion>(rot, i
BatchSize, BatchSize));

// Completion
for (var i = 0; i < BatchCount; i++)
while (!spawned2.isDone) await Awaitable.NextFrameAsync();

await WaitInterval();

// Cleaning up
for (var i = 0; i < BatchCount; i++)
foreach (var o in spawned2.Result) Destroy(o);

await WaitInterval();

Application.Quit();
}
}
165 981775
>>1774
пользуюсь иэнумерейтером
166 981780
>>1774
Ты совершенно непраильно пользуешься асинком. Почитай статьи про async await.

> async Awaitable WaitInterval()


> => await Awaitable.WaitForSecondsAsync(Interval);


Нах надо

> AsyncInstantiateOperation.SetIntegrationTimeMS(TimeSlice);


Нах надо

> await WaitInterval();


await Task.Delay

> for (var i = 0; i < BatchCount; i++)


> while (!spawned2.isDone) await Awaitable.NextFrameAsync();


for (var i = 0; i < BatchCount; i++)
await spawned2.Task;
167 981870
>>1774

>эвэитблом пользуется хоть кто-то?


Они чо, наконец саппорт добавили?

Бля, я прочитал. Это пиздец. Чо это за хуйня ЛОЛ????
https://docs.unity3d.com/2023.2/Documentation/Manual/AwaitSupport.html

Вам какую-то лютую хуйню скармливают, я хз что это нахуй лол. Это не нормальный async/await.
168 981872
>>1870
Тот же самый асинк авейт, с пулингом для оптимизации.

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

Ньюфагам пригодится, кто и так на юнитаске так и будут на нём сидеть.
169 981894
>>1870
Хм, неужели нативная замена UniTask?
170 981914
Насколько сложно писать шейдер для unity и тем более под hdrp?
Shader graph не предлагать. Он конечно хороший, но вот косяки с nm по uv2 и более - напрягают
171 981919
>>1872

>Тот же самый асинк авейт


В том самом - авейт бы никогда в мейн треде бы не вызывался, потому что всё бы повесилось.
172 981920
>>1919
Не.

Погугли как асинк авейт работает в шарпе.
173 981921
Вот бы они ещё замену UniRX сделали, а то его больше развивать не планируют.
12345.jpg322 Кб, 1956x1440
174 981924
Короче. Проблему изобразил. Хочу функционал беседки где персонаж появляется в одном месте 0 0 0, ходит по разным дыркам и выходит там же где входил. Т.е входит в 1 1 1 шляется там выходит так же в 1 1 1 идет дальше входит в 2 2 2 шляется там выходит в так же в 2 2 2.
Все мои попытки и гайды что находил либо не делают что хочу либо не работают в 3Д. Я уже устал, может конечно туплю уже от раздумий.
Если делать через обычные переходы сцен
SceneManager.LoadScene(LevelToLoad);
то все работает но он каждый раз он выходит в 0 0 0 и из 1 1 1 и из 2 2 2.
Пытался добавить позицию по вектору с точками перехода. Но в таком случае нужно указывать стартовую точку 0 0 0 и при загрузке стартового уровня он в неё всё равно прыгает первым делом из 1 1 1 и 2 2 2 а все попытки передать в позицию из другой сцены либо не засчитывает либо переписывает при переходе и загрузке сцены. Помогайте, завтра почитаю сегодня уже трудно мыслить рационально
175 981928
176 981929
>>1920
Мы вам перезвоним, как только ты эвейтаешь тред идет обратно в пул. Проблема в том, что если тред основной у тебя в нём евент луп крутится и ты не можешь события ловить. Попросту говоря у тебя окно зависает. Другой тред не подхватит выполнение лол, это не так работает в оконных приложениях.
177 981930
>>1924
Нихуя не понял че ты написал, но я уверен что все решится если перестанешь привязывать игрока к сцене
178 981932
>>1930
Что ты не понял? Я же написал и даже нарисовал беседки функционал это фелаут, скайримы и прочее.
Заходишь в город такой и бежишь до ближайшего здания, входишь в него через дверь и переносишься в другую сцену выходишь из этой сцены там где и входил и тебя переносит ко входу этого здания. Туда же где ты и входил. Все мои попытки повторить это упираются в то что при выходе из здания персонажа ко входу в город переносит а не ко входу в здание.
179 981935
>>1929
Спасибо, перезванивать не надо, я уже принял оффер в другой компании.

> Мы вам перезвоним, как только ты эвейтаешь тред идет обратно в пул. Проблема в том, что если тред основной у тебя в нём евент луп крутится и ты не можешь события ловить. Попросту говоря у тебя окно зависает. Другой тред не подхватит выполнение лол, это не так работает в оконных приложениях.


Ты не понимаешь че такое асинк/авейт и как он работает. Ты путаешь слип треда и авейт таски.
В чем по твоему разница между Тред.Слип и авейт Таск.Делей, мм?

Просто вот попробуй напиши код и ты увидишь в чем ты не прав.

Вот тебе объясняние как все работает:

Функция Петух()
Инструкция1
Авейт Таск2
Инструкция3

Когда ты вызываешь функцию Петух она выполняется ровно до момента Таск2 как и любая другая функция.

Если Таск2 не завершён на этот момент - данные упаковываются и кладутся в особый списочек.

Периодически в определённом месте компьютерной программы этот списочек проверяется, если Таск2 ещё не выполнился - ну так там и лежит. Если выполнился - убираем из списочка и продолжаем выполнение на Инструкция3.
Всё это работает а одном потоке. Но можно сконфигурировать так, чтобы после авейта брался любой поток из пула, а также то что авейтится может быть как в другом потоке, так и в этом, так и вовсе не быть чем-то активно использующим цпу - все что нам важно это индикатор готово или не готово и результат.

Как оно так хитро работает?
Любой асинхронный метод с хотя бы одним авейтом генерируется в стейт машину, которая хранит весь необходимый контекст - значения локальных переменных и текущую стадию(промежуток между авейтами).
180 981936
Да ваще че я распинаюсь, статью достаточно прочитать
https://metanit.com/sharp/tutorial/13.3.php
181 981948
на самом деле асинхронные методы не имеют никакого отношения к потокам. они просто генерируют машину состояний, типа как IEnumerator и yield return. только разница в том, что у IEnumerator нужно просто вызывать MoveNext(), а асинхронные методы используют callback'и у специальных awaiter-объектов, которые вызывают MoveNext() (типа task.GetAwaiter().OnCompleted(stateMachine.MoveNext))

потоки используются только внутри самих объектов Task во время их создания (например, через Task.Run()) или во время их продолжения (Task.ContinueWith()).
182 981960
>>1932
Я бля просто не могу представить где у тебя могут возникнуть проблемы если у тебя игрок в донтдестрой. Берешь и назначаешь позицию когда надо.
183 981961
>>1928

>R3


Фигасе. Да ещё и от автора оригинала. Спасибо.
image246 Кб, 1417x864
184 981962
Вот что пишет автор UniTask про Awaitable. Значит продолжаем сидеть на юнитасках.
185 981963
>>1962
Чем тебе корутины не нравятся? Не советую использовать async для геймплея.
1234567.JPG62 Кб, 1088x357
186 981964
>>1960
Ну так создай простую сценку уровня пикрил что бы каждый куб переносил на новую сцену и оттуда можно было вернутся назад на эту сцену ко входу в куб. И расскажи почему у тебя проблем нет а то у меня что-то проблемы
2024-05-09 23-00-54.mp414,1 Мб, mp4,
1920x1080, 0:14
187 981965
заебись я вас прогрел на общение
image259 Кб, 1280x905
188 981970
>>1965

>заебись я вас прогрел на общение


Отдрали тебя как юнитесу!
189 981972
>>1935
Джун, поезжай обратно на курсы. Ты так и не понял как это на самом деле работает.

>Когда ты вызываешь функцию Петух она выполняется ровно до момента Таск2 как и любая другая функция.


Именно. Поставь await Task.Delay(10000) в апдейт.

>не быть чем-то активно использующим цпу


Асинхронность гораздо больше нужна для IO-таск.
image.png111 Кб, 935x731
190 981973
>>1964
У тебя хотя бы какая-нибудь хуйня типа пикрила написана?
191 981982
>>1972

> Джун, поезжай обратно на курсы. Ты так и не понял как это на самом деле работает.


Я сеньор ващет

> Именно. Поставь await Task.Delay(10000) в апдейт.


Так давай, поставь

Блин жалко только в юнити апдейт НЕ асинхронный и там нельзя писать await, да?)))

Зато смари чё можно сделать

async void Start()
{
Debug.Log("kek");
await Task.Delay(10000);
Debug.Log("kek2");
}

Запусти это и посмотри как у тебя 10 секунд будет висеть юнити(с иделальной отзывчивостью🤣)

> Асинхронность гораздо больше нужна для IO-таск.


Я и говорю, там что угодно может быть, мы абстрагируемся от того что и как там делается
192 981983
Почему в юнити не могут добавить контекст сцены и контекст проекта из коробки? Ну типа блять можно же будет просто передавать его потом в Run(ctx) нужных методов, чтобы весь кал самоудалялся/закрывался в OnDestroy даже в асинках, хуинках и тд.

Я не понимаю, почему нигде блять никто практически не использует токены при работе с сетью и файлами че за хуйня
5.mp41,3 Мб, mp4,
960x520, 0:05
193 981985
>>1983

>токены


не знаю не ебу, я даже не знаю нахуя это всё

мимо 2 проекта в стиме
194 981986
>>1973
4 варианта, твой 5тый. Тоже самое показал что и те 4. Он всё равно возвращается в позицию в редакторе выставленной где он на карте находится а не в позицию перехода сцен.
195 981987
>>1983
Возьми и добавь. Нах из коробки?
196 981988
>>1986

>Он всё равно возвращается в позицию в редакторе выставленной


Нахуй он там выставлен блять? Понимаешь что игрока на сцене быть не должно вообще в редакторе? СУка.
197 981989
>>1987
Чтобы остальные макаки добавляли и юзали контекст первым аргументом в функциях
198 981990
>>1988
А где ему быть? И как он должен из того места на сцену попадать?
199 981991
>>1990
Префабом ему быть. Спавнишь его на стартовой сцене как хочешь. Бля слово спавн вообще тебе о чем нибудь говорит? Ты в игры играл вообще?
200 981992
>>1982

>Блин жалко только в юнити апдейт НЕ асинхронный и там нельзя писать await, да?)))


Жалко что барин запретил.

>Зато смари чё можно сделать


Это работает потому что корневой код, который вызывает Start уровнем выше - как раз не вызывает await. await блочит выполнение. Ты не можешь в мейнлупе вызывать await.

Хорошо это видно если запустить ту же простую консольку, а не пользоваться тем, что за тебя барин подумал и писал, чтобы у тебя не зависало.

using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
static async Task Main() {
Console.WriteLine("kek");
await Task.Delay(10000);
Console.WriteLine("kek2");
}
}
201 981993
>>1991
Появилось подозрение у меня, что частично не так что-то делаю. Я и так префабом его сделал только без удаления из сцен полагая что это и будет его спавн поинтом. Ни одного гайда не встречал из игроделов кто бы это делал, даже упоминаний о корректном использовании префабов и спавнов не видел. Ну либо я уже сам запутался и нихуя не догоняю буквально никто этого не делает в гайдах.
Есть какой-то гайд по этому?
202 981996
>>1993
Какие гайды, используй логику. Если у тебя уже есть игрок в донтдестрой, то если ты загружаешь новую сцену у тебя не должно быть в новой сцене игрока, дубликат же получится. И когда идешь обратно в главную сцену, он опять загружается, и там опять же не должно быть игрока, он у тебя уже есть в донтдестрой. Мне кажется тебе нужно просто почитать что такое DontDestroyOnLoad.

Позицию спавна можно тупо отдельным геймобжектом сделать, туда скрипт который на старте сцены к себе синглтон игрока телепортит. Ну или через манагера какого. Как хошь.

Если идти по способу который ты описал, когда игрок уже есть на сцене, то тут игрока пихать в донтдестрой использовать не надо конечно. Но это подход для игр где не нужно параметры игрока хранить и сцены между собой не связаны.
203 981998
что делает этот код

if (Vector3.Dot(speed, velocity.normalized) < maxSpeed) {
speed += velocity.normalized acceleration Time.deltaTime;
}
204 982000
>>1924

>Проблему изобразил. Хочу функционал


Общий алгоритм (начала игры) такой:
1. Закрываешь экран чёрной заглушкой.
2. Загружаешь персонажа, если его ещё нет.
3. Загружаешь карту отдельно от персонажа.
4. Размещаешь персонажа где хочешь на карте.
5. Снимаешь с экрана чёрную заглушку.
Тогда ты можешь хоть по всей карте персонажа телепортировать - игрок ничего не увидит. Без "загрузочного экрана" (чёрной заглушки) такие внезапные переходы выглядят уж очень тупо.

>>1996

>синглтон игрока


Вредный совет. А если он мультиплеер захочет?

>>1973
Этот код не подходит для ситуаций, когда комнаты связаны друг с другом в цепочки/лабиринт.

Для максимально общего случая перехода, нужно:
1. На каждой карте обозначены точки перехода.
2. Каждая точка перехода хранит в себе какую-либо форму ссылки на сцену, в которую она отправляет игрока, и одну из точек спавна в этой другой сцене.
3. При активации перехода игроком:
- смотрим, куда нам нужно перейти;
=> загружаем необходимую карту;
- смотрим, где нам нужно появиться;
=> размещаем игрока в точке спаяна.

Тогда можно делать сколько угодно переходов в совершенно любом порядке, даже создавать в игре своего рода неевклидовое пространство из комнат.
204 982000
>>1924

>Проблему изобразил. Хочу функционал


Общий алгоритм (начала игры) такой:
1. Закрываешь экран чёрной заглушкой.
2. Загружаешь персонажа, если его ещё нет.
3. Загружаешь карту отдельно от персонажа.
4. Размещаешь персонажа где хочешь на карте.
5. Снимаешь с экрана чёрную заглушку.
Тогда ты можешь хоть по всей карте персонажа телепортировать - игрок ничего не увидит. Без "загрузочного экрана" (чёрной заглушки) такие внезапные переходы выглядят уж очень тупо.

>>1996

>синглтон игрока


Вредный совет. А если он мультиплеер захочет?

>>1973
Этот код не подходит для ситуаций, когда комнаты связаны друг с другом в цепочки/лабиринт.

Для максимально общего случая перехода, нужно:
1. На каждой карте обозначены точки перехода.
2. Каждая точка перехода хранит в себе какую-либо форму ссылки на сцену, в которую она отправляет игрока, и одну из точек спавна в этой другой сцене.
3. При активации перехода игроком:
- смотрим, куда нам нужно перейти;
=> загружаем необходимую карту;
- смотрим, где нам нужно появиться;
=> размещаем игрока в точке спаяна.

Тогда можно делать сколько угодно переходов в совершенно любом порядке, даже создавать в игре своего рода неевклидовое пространство из комнат.
205 982001
>>1996
Чел до сих пор не понимаешь проблемы. У меня работают переходы. У меня персонажи появляются на новой сцене где надо, выходит из нее тоже где надо
ПРОБЛЕМА
БЛЯДЬ
В ТОМ
ЧТО
ОН ВОЗРВАЩАЕТСЯ
НА ОСНОВНУЮ
СЦЕНУ
В ТОЧКУ
ОТКУДА ИГРА НАЧИНАЕТСЯ
А НЕ ВМЕСТО ПЕРЕХОДА

Я только что буквально удалил со сцена персонажа. Поставил ему точку входа в игру в методе старт при запуске новой игры. И он там появился без всяких проблем. Добежал до перехода в другую локацию и перешел в неё. В той сцене тоже удалил персонажа с редактора и так же поставил точку спавна куда он и переместился благополучно. Побегал но второй локации и вернулся назад к переходу в основную локацию И МНЕ НУЖНО И ДОЛЖЕН БЫЛ ЧАР ВЕРНУТСЯ В ТОМ МЕСТО ОТКУДА Я ВЫШЕЛ но он снова кинул меня на стартовую позицию игрока в сцене. Переход кстати по вот этому твоему >>1973 сейчас осуществляется.
206 982002
>>2000

>Вредный совет. А если он мультиплеер захочет?


Без обид но пошел нахуй, этот чел до сих пор не шарит почему при старте сцены вызывается старт на скриптах которые в сцене. А ты про мультиплеер.
207 982003
>>1992

> Жалко что барин запретил.


Не барин запретил, а спецификация языка.
await можно писать только в методе который async.
Зато асинк метод можно заколлить в неасинк методе без авейта. Он будет выполняться как я расписал выше.

> Это работает потому что корневой код, который вызывает Start уровнем выше - как раз не вызывает await. await блочит выполнение. Ты не можешь в мейнлупе вызывать await.


Могу. Нах ты вообще продолжаешь писать, тебе уже выше я и еще один чел пояснили как это работает.

> а не пользоваться тем, что за тебя барин подумал и писал, чтобы у тебя не зависало.


Ну так ты не знаешь просто как оно работает, пожтому говоришь глупости.

А давай чуть чуть посмешнее программу напишем. Вот так:
class Program
{
static async Task Main()
{
Console.WriteLine("rofl1");
Prekol();
Console.WriteLine("rofl2");
await Task.Delay(15000);
Console.WriteLine("rofl3");
}

static async Task Prekol()
{
Console.WriteLine("kek");
await Task.Delay(10000);
Console.WriteLine("kek2");
}
}

Какой будет вывод? В каком потоке что выполняется?
207 982003
>>1992

> Жалко что барин запретил.


Не барин запретил, а спецификация языка.
await можно писать только в методе который async.
Зато асинк метод можно заколлить в неасинк методе без авейта. Он будет выполняться как я расписал выше.

> Это работает потому что корневой код, который вызывает Start уровнем выше - как раз не вызывает await. await блочит выполнение. Ты не можешь в мейнлупе вызывать await.


Могу. Нах ты вообще продолжаешь писать, тебе уже выше я и еще один чел пояснили как это работает.

> а не пользоваться тем, что за тебя барин подумал и писал, чтобы у тебя не зависало.


Ну так ты не знаешь просто как оно работает, пожтому говоришь глупости.

А давай чуть чуть посмешнее программу напишем. Вот так:
class Program
{
static async Task Main()
{
Console.WriteLine("rofl1");
Prekol();
Console.WriteLine("rofl2");
await Task.Delay(15000);
Console.WriteLine("rofl3");
}

static async Task Prekol()
{
Console.WriteLine("kek");
await Task.Delay(10000);
Console.WriteLine("kek2");
}
}

Какой будет вывод? В каком потоке что выполняется?
208 982004
>>2001

>МНЕ НУЖНО И ДОЛЖЕН БЫЛ ЧАР ВЕРНУТСЯ В ТОМ МЕСТО ОТКУДА Я ВЫШЕЛ


Так ты контролируй хоть, что у тебя загружается и выгружается из памяти. В Unity такое невозможно?

Скорее всего, ты что-то не так делаешь. Попробуй набросать чистую сцену с нуля и там попробовать.

>>1993

>никто этого не делает в гайдах


Учи движок по официальным руководствам.
Слепо следовать "гайдам" - путь в Tutorial Hell.

>>2002

>А ты про мультиплеер.


Он же про игры беседки говорил. Наверняка свою собственную убийцу TES:O / F76 планирует сделать.

Ну и как минимум мультиплеер "за одним экраном" несложно сделать новичку, как мне кажется - с сетью взаимодействий нет, нужно только одну сцену с двух камер отображать и две+ фигурки двигать двумя+ отдельными контроллерами.

Поэтому привычка делать игрока синглтоном может навредить, когда захочется сделать две+ фигурки.
image.png44 Кб, 813x133
209 982005
>>2001

> но он снова кинул меня на стартовую позицию игрока в сцене


КТО ОН БЛЯТЬ??? Пикрил метод вызывется? PreviousScenePosition задан? После метода что еще вызывается? Проверяй все нахуй. Хуйли ты на меня орешь.
210 982006
>>2003

>а спецификация языка.


Это в архиткетуре юньки заложено, что сущности нельзя апдейтить асинхронно, а не в языке.

>Могу.


И чо будет делать программа дальше по-твоему? Бля, как же вы нахуй вообще не понимаете что под капотом ваших инструментов происходит, это просто пиздец.

>А давай чуть чуть посмешнее программу напишем


Именно так и выглядит то, что происходит в юньке. Твой start не заавейчен, поэтому юнька и отзывается.
211 982008
>>2006

> Это в архиткетуре юньки заложено, что сущности нельзя апдейтить асинхронно, а не в языке.


Что значит "сущности апдейтить асинхронно".
1. Какие сущности?
2. В чем заключается апдейт?
3. Чем различается апдейт сущности синхронно и не асинхронно.
4. Каким образом можно это заложить архитектурно.

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

> И чо будет делать программа дальше по-твоему? Бля, как же вы нахуй вообще не понимаете что под капотом ваших инструментов происходит, это просто пиздец.


Так это ты не понимаешь, а я понимаю. Я тебе объяснил как всё работает вот тут >>1935

> Именно так и выглядит то, что происходит в юньке. Твой start не заавейчен, поэтому юнька и отзывается.


В юнити в мейн лупе нету слова асинк ни в одном месте. Что бы ты ни делал где угодно с использованием слова асинк в юнити - оно никогда и никак не заблокирует(определение - блок потока - это когда там постоянно выполняются команды длителньое время, условно while true например или вычисление тяжелое) основной поток.

Знаешь почему я до этого доебался?
Вот поэтому:
>>1919

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


Каким образом можно "в мейн треде вызвать авейт"?
Давай покажи с примерами.
Как я понял в юнити авейтаблах ты утверждаешь можно "в мейн треде вызвать". Покажи как. А потом покажи как по-другому обычными тасками не вызвать.
Т.е. жду от тебя 2 вещи:
1. Как в в новых юнитевских эвейтеблах "всё повесить" с помощью слова авейт
2. Как всё НЕ повесит в "том самом"

И это вершина айсберга.

> авейт бы никогда в мейн треде бы не вызывался


К чему ты используешь тут термин "тред" ака "поток"?

Давай рассмотрим вот этот код:
void Start()
{
Kek1();
await Kek2();
Kek3();
}
async Task Kek1()
{
Debug.Log("k1");
await Task.Delay(1000);
Debug.Log("k11");
}

async Task Kek2()
{
Debug.Log("k2");
await Task.Delay(2000);
Debug.Log("k22");
}

async Task Kek3()
{
Debug.Log("k3");
await Task.Delay(5000);
Debug.Log("k33");
}

Под спойлерами ответы

Вопрос 1: В каком "треде" будет вызван каждый из методов Debug.Log?
все в мейн треде

Вопрос 2: А если переписать такой же код без юнити апи и сделать консольное приложение - что-то изменится?
ничего, все в мейн треде

Вопрос 3: Возможно ли изменить это поведение
Да, через конфигурАвейт

А также поэтому
>>1929

> ты эвейтаешь тред идет обратно в пул.


Что значит "эвейтаешь тред"?
Можно авейтит сущность под названием Таск, которая содержит маркер завершена ли некая задача или нет.

Можешь конечно попытаться чето дальше расписывать, но я тебе рекомендую просто зайти в юнити и сделать эксперименты + почитать теорию и всё встанет на свои места тогда.
211 982008
>>2006

> Это в архиткетуре юньки заложено, что сущности нельзя апдейтить асинхронно, а не в языке.


Что значит "сущности апдейтить асинхронно".
1. Какие сущности?
2. В чем заключается апдейт?
3. Чем различается апдейт сущности синхронно и не асинхронно.
4. Каким образом можно это заложить архитектурно.

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

> И чо будет делать программа дальше по-твоему? Бля, как же вы нахуй вообще не понимаете что под капотом ваших инструментов происходит, это просто пиздец.


Так это ты не понимаешь, а я понимаю. Я тебе объяснил как всё работает вот тут >>1935

> Именно так и выглядит то, что происходит в юньке. Твой start не заавейчен, поэтому юнька и отзывается.


В юнити в мейн лупе нету слова асинк ни в одном месте. Что бы ты ни делал где угодно с использованием слова асинк в юнити - оно никогда и никак не заблокирует(определение - блок потока - это когда там постоянно выполняются команды длителньое время, условно while true например или вычисление тяжелое) основной поток.

Знаешь почему я до этого доебался?
Вот поэтому:
>>1919

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


Каким образом можно "в мейн треде вызвать авейт"?
Давай покажи с примерами.
Как я понял в юнити авейтаблах ты утверждаешь можно "в мейн треде вызвать". Покажи как. А потом покажи как по-другому обычными тасками не вызвать.
Т.е. жду от тебя 2 вещи:
1. Как в в новых юнитевских эвейтеблах "всё повесить" с помощью слова авейт
2. Как всё НЕ повесит в "том самом"

И это вершина айсберга.

> авейт бы никогда в мейн треде бы не вызывался


К чему ты используешь тут термин "тред" ака "поток"?

Давай рассмотрим вот этот код:
void Start()
{
Kek1();
await Kek2();
Kek3();
}
async Task Kek1()
{
Debug.Log("k1");
await Task.Delay(1000);
Debug.Log("k11");
}

async Task Kek2()
{
Debug.Log("k2");
await Task.Delay(2000);
Debug.Log("k22");
}

async Task Kek3()
{
Debug.Log("k3");
await Task.Delay(5000);
Debug.Log("k33");
}

Под спойлерами ответы

Вопрос 1: В каком "треде" будет вызван каждый из методов Debug.Log?
все в мейн треде

Вопрос 2: А если переписать такой же код без юнити апи и сделать консольное приложение - что-то изменится?
ничего, все в мейн треде

Вопрос 3: Возможно ли изменить это поведение
Да, через конфигурАвейт

А также поэтому
>>1929

> ты эвейтаешь тред идет обратно в пул.


Что значит "эвейтаешь тред"?
Можно авейтит сущность под названием Таск, которая содержит маркер завершена ли некая задача или нет.

Можешь конечно попытаться чето дальше расписывать, но я тебе рекомендую просто зайти в юнити и сделать эксперименты + почитать теорию и всё встанет на свои места тогда.
212 982024
Нашел себе гайд который покрывает все мои вопросы, правда он для 2д но если что переделаю. Завтра попробую сегодня всё равно заебался так ничего и не сделав.
213 982025
Я правильно понимаю, чтобы запустить Юньковское приложение из того же VS Code, я должен в Start, например, создать пустой компонент и в него добавить файл с главным циклом?

И второй вопрос: что происходит, если в сцене всего 2 компонента с навешанным на них одинаковым скриптом?
16325925131950.mp41,9 Мб, mp4,
1280x720, 0:22
214 982034
>>2025
Ты можешь самые базовые туториалы пройти? У тебя вопросы даже не уровня новичка, а уровня душевнобольного.
215 982044
>>2034
Хорошо. Можешь ткнуть носом в документы, где описаны различные точки входа в Юньковское приложение?
4.webm343 Кб, webm,
640x360, 0:04
216 982054
>>2034

>а уровня душевнобольного.


таким лучше даже не отвечать, может на следующий день забудут про юнити навсегда
217 982056
>>2054
Большая, я смотрю, конкуренция у ассетфлипперов.
218 982072
>>2008

>1. Какие сущности?


Монобэхи.

>2. В чем заключается апдейт?


https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html

>3. Чем различается апдейт сущности синхронно и не асинхронно.


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

>4. Каким образом можно это заложить архитектурно.


Да любым. ECS как пример.

>другое значение общепринято.


Не знал что в юньке апдейт - это на самом деле не апдейт.

>"в мейн треде вызвать авейт"


Если барин запрещает всегда можно вызвать Task.GetAwaiter().GetResult()
и произёдт упс. А всё потому что ты ограничен мейнтредом.

Рекомендую тебе побольше РАБотать и поменьше готовиться к собеседованиям, это полный кринж.
219 982091
>>2072

> >1. Какие сущности?


> Монобэхи.


> >2. В чем заключается апдейт?


> https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html


> >3. Чем различается апдейт сущности синхронно и не асинхронно.


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


> >4. Каким образом можно это заложить архитектурно.


> Да любым. ECS как пример.


А смотри у меня есть
public class Kek : MonoBehaviour
{
public int Rofl;
public void GigaUpdate()
}
Я могу изменить значение рофл и вызвать гигаапдейт... из другого потока!

Нельзя вызывать большую часть Unity API. А не "апдейтить сущности" рофл.

> Не знал что в юньке апдейт - это на самом деле не апдейт.


Я про "авейтить", "авейтить тред", "асинхронно".

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


Опять путаешь многопоточность и асинхронность.

> Если барин запрещает всегда можно вызвать Task.GetAwaiter().GetResult()


Это не "авейт", это то что внутри будет из себч предстаалять
while(!task.IsCompleted){}

Почему ты используешь термин языка "авейт" если подарзумеваешь не "авейт" а какое-то своё маняпонимание этого термина?

> Рекомендую тебе побольше РАБотать и поменьше готовиться к собеседованиям, это полный кринж.


Да я уж понял, что ты тупа троленгуешь.

Хз что тут ещё отвечать, все мои вопросы по сущесвту описаны в этом посте >>2008 ты их тактично проигнорил.

И стал отвечать только про какую-то хуйню которая имеет второстепенное значение и выливается из твоего непонимания что такое многопоточность и асинхронность и некоторых слов которые ты используешь.

Либо понимание у тебя есть, но с терминологией беда и поэтому нихуя не понимаешь что я пишу и сам пишешь чушь.
Ну тут уж сорян, что я могу сказать, если async/await в C# используется в контексте асинхронности(что в свою очередь НЕ синоним многопоточности) и это конкретные ключевые слова языка для описания программы с точки зрения этой самоц асинхронности, а в твоем личном понимании await это while(!task.IsCompleted){}
Тут только могу развести руками.
219 982091
>>2072

> >1. Какие сущности?


> Монобэхи.


> >2. В чем заключается апдейт?


> https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html


> >3. Чем различается апдейт сущности синхронно и не асинхронно.


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


> >4. Каким образом можно это заложить архитектурно.


> Да любым. ECS как пример.


А смотри у меня есть
public class Kek : MonoBehaviour
{
public int Rofl;
public void GigaUpdate()
}
Я могу изменить значение рофл и вызвать гигаапдейт... из другого потока!

Нельзя вызывать большую часть Unity API. А не "апдейтить сущности" рофл.

> Не знал что в юньке апдейт - это на самом деле не апдейт.


Я про "авейтить", "авейтить тред", "асинхронно".

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


Опять путаешь многопоточность и асинхронность.

> Если барин запрещает всегда можно вызвать Task.GetAwaiter().GetResult()


Это не "авейт", это то что внутри будет из себч предстаалять
while(!task.IsCompleted){}

Почему ты используешь термин языка "авейт" если подарзумеваешь не "авейт" а какое-то своё маняпонимание этого термина?

> Рекомендую тебе побольше РАБотать и поменьше готовиться к собеседованиям, это полный кринж.


Да я уж понял, что ты тупа троленгуешь.

Хз что тут ещё отвечать, все мои вопросы по сущесвту описаны в этом посте >>2008 ты их тактично проигнорил.

И стал отвечать только про какую-то хуйню которая имеет второстепенное значение и выливается из твоего непонимания что такое многопоточность и асинхронность и некоторых слов которые ты используешь.

Либо понимание у тебя есть, но с терминологией беда и поэтому нихуя не понимаешь что я пишу и сам пишешь чушь.
Ну тут уж сорян, что я могу сказать, если async/await в C# используется в контексте асинхронности(что в свою очередь НЕ синоним многопоточности) и это конкретные ключевые слова языка для описания программы с точки зрения этой самоц асинхронности, а в твоем личном понимании await это while(!task.IsCompleted){}
Тут только могу развести руками.
220 982101
>>2091

>Опять путаешь многопоточность и асинхронность.


Бляяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя.

Асинхронность должна выполняться в нескольких потоках, иначе она просто не имеет практического смысла. Ты понимаешь что однопоточный асинхронный код медленнее синхронного?

Остальное даже комментить лень чо то. Нахуй ты апдейт хочешь вызывать из жопы, ты ебанутый?
ты-же-долбоеб.mp45,4 Мб, mp4,
1280x720, 0:24
221 982102
>>2101

>Асинхронность должна выполняться в нескольких потоках, иначе она просто не имеет практического смысла

222 982103
>>2101

> Асинхронность должна выполняться в нескольких потоках, иначе она просто не имеет практического смысла. Ты понимаешь что однопоточный асинхронный код медленнее синхронного?


Нет не должна. Кому должна?

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

Ты можешь просто ебануть
async UniTask AutoFire()
{
while(true)
{
Fire();
await UniTask.Delay(1000);
}
}

И в любом месте ты можешь просто вызывать
AutoFire() и у тебя будет автоматом стрельба идти разумеется с прокидыванием токенов для отмены

Ты видишь тут где то многопоточность? Вот и я нет.

Можно вообще делать хуйню по типу
async UniTask IdleBehavior()
{
var petookh = await SearchForPetookh();
FollowPetookh(petookh);
}

Многопоточность есть, нет?

async UniTask OpenWindow()
{
await window.PlayOpenAnimation();
window.Initialize();
}
Есть многопоточность? Нету? Значит нет смысла так писать что ли по твоей логике?

Но разумеется можно авейтить и какие-то вещи, которые на деле будут выполняться в другом потоке.
Можно авейтить ио баунд операции.
Можно авейтить ожидание ответа от сети. Можно авейтить какое то условие.

Но суть в том, что нам поебать что там скрывается под таской которую мы авейтим - всё что таска в себе несёт это результат и флаг о том что таска завершена.

Может у тебя отдельный поток посчитает йобу и поставит статус таски в выполненный.
Может с диска подгрузишь говно.
Может будешь ждать когда пройдет нудное время.
Может будешь ждать когда враг появится в поле зрения.
Может будешь ждать когда завершится проигрывание анимации.

Много из этих вариантов использования связаны с многопоточностью? Нет? Значит всё, не делаем так больше раз это смысла не имеет, и ебашим кашу из коллбеков и горячей логики с проверками условий?

> Нахуй ты апдейт хочешь вызывать из жопы, ты ебанутый?


Это ты ебанутый, я тебе просто показываю где твоя логика по швам трещит.
"Сущности"(как выяснили монобехи) нельзя апдейтить из других потоков - закономерно показываю тебе пример, что можно че угодно делать с монобехами из других потоков, если тебе надо - ебош. Нельзя только часть юнити апи использовать.
222 982103
>>2101

> Асинхронность должна выполняться в нескольких потоках, иначе она просто не имеет практического смысла. Ты понимаешь что однопоточный асинхронный код медленнее синхронного?


Нет не должна. Кому должна?

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

Ты можешь просто ебануть
async UniTask AutoFire()
{
while(true)
{
Fire();
await UniTask.Delay(1000);
}
}

И в любом месте ты можешь просто вызывать
AutoFire() и у тебя будет автоматом стрельба идти разумеется с прокидыванием токенов для отмены

Ты видишь тут где то многопоточность? Вот и я нет.

Можно вообще делать хуйню по типу
async UniTask IdleBehavior()
{
var petookh = await SearchForPetookh();
FollowPetookh(petookh);
}

Многопоточность есть, нет?

async UniTask OpenWindow()
{
await window.PlayOpenAnimation();
window.Initialize();
}
Есть многопоточность? Нету? Значит нет смысла так писать что ли по твоей логике?

Но разумеется можно авейтить и какие-то вещи, которые на деле будут выполняться в другом потоке.
Можно авейтить ио баунд операции.
Можно авейтить ожидание ответа от сети. Можно авейтить какое то условие.

Но суть в том, что нам поебать что там скрывается под таской которую мы авейтим - всё что таска в себе несёт это результат и флаг о том что таска завершена.

Может у тебя отдельный поток посчитает йобу и поставит статус таски в выполненный.
Может с диска подгрузишь говно.
Может будешь ждать когда пройдет нудное время.
Может будешь ждать когда враг появится в поле зрения.
Может будешь ждать когда завершится проигрывание анимации.

Много из этих вариантов использования связаны с многопоточностью? Нет? Значит всё, не делаем так больше раз это смысла не имеет, и ебашим кашу из коллбеков и горячей логики с проверками условий?

> Нахуй ты апдейт хочешь вызывать из жопы, ты ебанутый?


Это ты ебанутый, я тебе просто показываю где твоя логика по швам трещит.
"Сущности"(как выяснили монобехи) нельзя апдейтить из других потоков - закономерно показываю тебе пример, что можно че угодно делать с монобехами из других потоков, если тебе надо - ебош. Нельзя только часть юнити апи использовать.
223 982105
>>2101

> Ты понимаешь что однопоточный асинхронный код медленнее синхронного?


Код везде один и тот же пчел.

Оверхед "асинхронного кода" заключается только в том, что создается инстанс стейт машины в который заносятся данные, чтобы потом продолжить выполнение после авейта.

Если ты не будешь пользовать асинхронностью, то тебе придётся самому думать как ращбивать выполнение на несколько частей и созранять стейт для продолжения(и у этого внезапно тоже будет оверхед)
224 982108
>>1998
зачем здесь Vector3.Dot()
225 982145
>>2105
Не всегда асихронный код это набор коллбэков, которые у тебя внезапно хотят управление перехватить, поэтому аналогичный синхронный код не всегда будет требовать стейт.

Так то ребятки.
226 982147
>>2145
Нууу у тебя есть функция, в которой тебе тебе надо дождаться когда что-то выполнится и продолжить выполнения.

Как это сделать без асинка так, чтобы не использоватт колбеки и не сохранять стейт?
Ну только если подписками, но это не сказать что лучше.
Screenshot 2024-10-31 at 15.03.07.png10 Кб, 388x76
227 982155
Сколько весит пустая Юнити свежая установленная ?
228 982161
>>2155
Только вчера поставил, чистая. Хаб + юнька.
229 982311
Что за хуйня, рабоатю с новой инпут системой, нужно чтобы персонаж приседал при удержании кнопки приседа. И вроде бы все хорошо, ведь я уже реализовал подобное с полетом на удержание кнопки прыжка, но вот незадача, при удержании кнопки приседа всегда CallbackContext с TRUE блять получается, какого блять хуя, если буквально идентичные ситуации с прыжком и приседом. На обоих экшенах добавлена Press в Interactions. Вот этот OnCrouchInput всегда инвокается с тру, хотя с прыжком аналогичная ситуация и там такого нету. Оба метода подписываются actionName.performed+=. Ну вот что тут может быть не так, я в ахуе
230 982320
>>2311
Бля ебанина какая то, я обычно генерю класс в инпут системе и к нему прощаюась типо inputSystem.OnCrouch...
231 982437
>>2311
>>2320
Да это пиздец а не система я уже который день пытаюсь сделать управление которое на старой системы было сделано за пару часов неспеша. Я её вообще не понимаю блядь это дурость какая-то.

Окей, сделал кое как передвижение, вращением камерой для персонажа, прыжки, бег, приседания, открытие менюшки внутриигровой на Esc и уже обрадоваться успел что наконец эта херня закончилась как тут внезапно оказалось что менюшка не работает потому что внезапно видимо новая система требует реализации OnClick механики, из коробки эта хуйня не работает. Со старой системой такой проблемы даже не было. И я уже кучу опять видосов пересмотрел и кучу всяких тупых способов перепробывал о которых даже говорить не хочу но так и не смог сделать банальный сука он клик. Механика сука простейших движков которая есть из коробки ну везде в рабочем виде.

Сука я даже не могу понять как сформулировать это всё и как решить. Оно просто блядь не работает хуй пойми почему.
Всё по ебучим гайдам прям по пунктам - не работает. Клики по менюшке просто не зачитываются, не то что функционал не запускает а просто даже обработчик кнопки что на неё нажали что бы перекрасить банально не срабатывает.
UI система включена, схема составлена. Но просто блядь не работают клики мышкой.
232 982447
>>2437
делай на старом input'е.
233 982451
>>2437
Двачую этого >>2447

Сам переполз на новый импут т.к он все же удобнее старого для комбинирования мобилки+пк, но в начале тоже плевался.
По сути делаешь пару импут менеджеров, одного на персонажа для принятия команд для него, один на какой нибудь системный объект для обработки менюшек и прочего, если надо еще один для специфичных задач.

Еще могу посоветовать скачать third person контроллер и там посмотреть на живую как импут в скрипте работает, (импут сбора скрипт+перенаправление в контроллер персонажа).

Вангую ты где-то мелочь пропускаешь и проебываешься.
234 982470
>>2437
Зачем тебе Click для меню, я не понимаю? Какую задачу ты решаешь?

UI использует свой EventSystem, который клики регает и прокидывает в кнопки сам.

> Сука я даже не могу понять как сформулировать это всё и как решить. Оно просто блядь не работает хуй пойми почему.


Напиши что ты хочешь сделать.

Инпут система простейшая вещь и работает понятнее чем старая.

У тебя когда ты её сейыишь должен сгенерится класс.
Даллше делаешь

var inputSystem = new InpuSystem();
inputSystem.Enable();

inoutSystem.OnJump. ...тут подписываешься на событие
TEST1.mkv1,4 Мб, mp4,
1920x1080, 1:13
235 982479
>>2451
Да что там можно пропустить я уже заебался, вот ради примера тестовый новый проект сделал.
Заблудится там негде. Но в основном проекте это просто не работает, никаким образом сколько бы я не пытался и я хуй знает что я упускаю уже.
>>2470
Меню в игре я же написал, нажимаешь ESC канвас с менюшкой появляется на ней кнопочки на которые нажимать нужно. Что не понятного? И вот нажатия на эти кнопочки никак не фиксируются.
хотя все необходимые вещи настроены >>2437
TEST2.mkv1,9 Мб, mp4,
1920x1080, 0:49
236 982482
Вот иллюстрация если со словами трудно.
237 982484
>>2479
>>2482
А нах тебе инпут система для UI? Так никто не делает
238 982485
>>2484
Захотелось?
На старой системе работает проблем никаких не было.
Твой вопрос не по теме. Проблему так и не увидел? с 2х видосов?
На 1 всё работает как мне и нужно, на 2 уже не работает и почему так в этом и заключается мой вопрос.
239 982486
>>2479
>>2482
А ты про UI, что там у тебя за косяк и не работает?
Ты ловишь ui эвент на наводку кнопки, и в чем трабла?
На видосе где не работает очевидно что идет конфликт каких то эвентов или перекрытий.

Для теста советую сделать дубликат сцены, и зайти в нее экспериментировать. Удалить все кроме нужно, сделать новое и т.п.
100% твой косяк где-то. Очередность еще может не соблюдаться, эвент должен быть последним в сцене для уменьшения шанса перекрытич.
240 982488
>>2486

>что там у тебя за косяк и не работает?


А мне откуда знать я об этом и спрашиваю

>что там у тебя за косяк и не работает?


Не фиксирует вообще ничего, я же показал специально на видео сделав его таким же как первое не работает
-он клик
-наведение на кнопкку
- её удержание
вообще нихуя не работает хотя это функционал из коробки о чем я перое видео и снял. Там вообще нихуя делать не надо даже что бы это работало.

Ну сколько нахуй раз нужно повторять одно и тоже, слова не помогают, видео не помогают. Почему вы нахуй никак не понимаете нихуя что вас спрашивают.
Пиздец какой-то.

>Для теста советую


Для теста я сделал новый проект что бы проверить что всё работает как надо из коробки даже, и даже видео снял - работает.
И до 6 утра сидел экспериментировал с этой хуйней на основном так и не добившись какого-либо успеха. После чего уже сюда обратиться решил но тут похоже тоже никто нихуя не знает в чем причина может быть.
241 982489
>>2488

>но тут похоже тоже никто нихуя не знает в чем причина может быть.


Да потому что ты хуйню какую-то пишешь без конкретики.

Тебе блять по русски написано, сделай дубликат сцены и на нем экспериментируй, а не делай нахуя новый проект.
Написано же косяк В ТЕБЕ, и выяснить где и как можешь только ты.
Ну или залей проект на помойку я скачаю и расскажу где трабла раз ты такой тугой.

Я тебя уверяю ты обосрался в какой-то мелочи либо из-за перекрытий или ломания скриптами.
242 982490
>>2485
Обычно инпут систему используют для кнопок. Ивенты от мышки - только если для геймплейной логике.

Клики по кнопкам в меню - для этого никто не подклбчает инпут систему, нахуй надо, если оно и так работает?

Инпут система годнота именно в геймплее, либо при навигации кнопками по меню(Escape назад например), плюс для переназначения клавиш.

> Твой вопрос не по теме. Проблему так и не увидел? с 2х видосов?


> На 1 всё работает как мне и нужно, на 2 уже не работает и почему так в этом и заключается мой вопрос.


Почему нк по теме? Мой ответ - нет смысла юзать инпут систему для юи.
243 982492
>>2488

> Для теста я сделал новый проект что бы проверить что всё работает как надо из коробки даже, и даже видео снял - работает.


Ну и подключи теперь туда инпут систему, посмотри будет ли работать. Поч ты этого не сделал ещё?

А так, скорее всего действительно у тебя просто что то перекрывает и всё. Покликай по сцене, удостоверься что ничто не перекрывает кнопки, отклбчи всё кроме кнопок и иаент системы, сделай чистую сцену в том же проекте с одной кнопкой
244 982495
>>2489

>Тебе блять по русски написано, сделай дубликат сцены и на нем экспериментируй


А я тебе написал

>И до 6 утра сидел экспериментировал с этой хуйней на основном так и не добившись какого-либо успеха


Я уже это и так делал ДО 6 УТРА ЕЩЕ РАЗ СУКА ТЕБЕ Пишу что бы ты понял. Я и так заебался эту проблему искать еще с вами теперь обьяснять всё по 30 раз одно и тоже одно и то же. Сука, сколько раз вам повторять нужно одни и те же вещи. Что не так с вами?

>Я тебя уверяю ты обосрался в какой-то мелочи либо из-за перекрытий или ломания скриптами.


ИМЕННО ЭТО Я И СПРАШИВАЮ БЛЯДЬ СУКА СКОЛЬКО РАЗ УЖЕ ПОВТОРИЛ ГДЕ МОЖЕТ БЫТЬ БЛЯДЬ ОШИБКА?
Я и так знаю что где-то что-то пошло не так и если бы я знал ГДЕ И ЧТО я бы вопросы не задавал ГДЕ И ЧТО. Пиздец.

>>2490
ЭТО ФУНКЦИЯ БУКВАЛЬНО БЛЯДЬ НАЗЫВАЕТСЯ UI INPUT MODULE
ОН ДЛЯ ЭТОГО И СДЕЛАН БЛЯДЬ. Что бы можно было делать меню пауз и прочую хуйню которую я тут и делаю с которой у меня и проблема. Блядь чел просто не отвечей ничего не по теме плз. Толку от тебя всё равно 0, а твои рассуждения на другие темы мне не интересны я тебя о них не спрашивал.
245 982496
>>2495

>Я уже это и так делал


Пиздабол ты, нихуя ты не делал, если бы ты это сделал то дошел бы до момента когда все бы заработало и понял в чем косяк.

Честно говоря я уже почти уверен что ты просто троллишь, или уже решил проблему и пытаешься слиться.

Любая проблема в юнити даже без знания куда и где копать решается тупо перебиранием.
В твоем же случаи решается элементарным удалением по очереди разных вещей в сцене пока не останется одно модуля, и все начнет работать, далее возврат по очереди того что удалял и ожиданием когда снова поломается.
246 982505
>>2496
Вообще-то я заебался скрипты переписывать, переподключать модули, создавать их с 0 и прочей хуйней заниматся. Всю ночь и до утра этим занимался.

Но внезапно да, всё это было совершенно бесполезно потому что всё работало.

>решается элементарным удалением по очереди разных вещей в сцене пока не останется одно модуля, и все начнет работать, далее возврат по очереди того что удалял и ожиданием когда снова поломается.



Как бы глупо не звучало но именно это и помогло. Просто сейчас вообще всё повырубал и оно заработало, Проблема оказалась в канвасе затемнения который должен был при переходе между сценами вызываться во время загрузки, каким образом и как он оказался связан с вызовом меню и почему он решил вызываться при открытии меню тот еще вопрос. Разбираться с которым я даже не хочу, просто его переделаю с 0. Но после того как его не стало всё тут же заработало как и должно было изначально.

Простейшее решении тупо всё выключить нахуй - частично помогло. Теперь в самой игровой сцене(1) если запустить её из редактора меню работает. Но если запуск производить из сцены игрового меню который открывается при запуске игры (0) и перейти на игровую сцену(1) по кнопке играть меню снова не рабочим становится. И канваса этого который руинил всё уже нет. Поэтому проблема снова тут.
Блядь какой же пизец. Как я ненавижу нахуй эту ебучую новую систему.
17028653272960.mp42,4 Мб, mp4,
1920x1080, 0:08
247 982508
>>2505

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


ты ебучий даун можешь посмотреть видео ютубовских протыков на анлийском? просто повтори за ними ёбаный твой рот блядь
248 982510
>>2508
Нихуя ты гений а я то не додумался до этого
249 982540
Кто нибудь сталкивался с таким что vs студия перестает подсвечивать и продолжать написанное?
Клацию в preference - Regenerate project files, какое-то время работает все как надо, но спустя мин 5-10, тупо перестает. Будто в ней не поставлен модуль для юнити и шарпа, вообще.
Недавно началась такая трабла после переустановки юньки и студии.

Прям настолько критичная хрень что бери да переходи на другую IDE.

Что может быть? Куда копать? Понятное дело попробовать переставить студию, но что-то сомневаюсь что поможет.
250 982542
>>2540
Классы от юньки начинают как бы мигать, подсвечиваться на сек и становится серыми будто простой код в комментариях. Ёбаный врот.
251 982546
>>2540
Наверное, падает language server
252 982554
>>2505

> Как бы глупо не звучало но именно это и помогло. Просто сейчас вообще всё повырубал и оно заработало, Проблема оказалась в канвасе


А МЫ ТЕБЕ ПРО ЧТО ГОВОРИЛИ АААААААААААААААА
253 982555
>>2554
Да это было понятно сначало, что он где-то обосрался в куче своих геймобджектов и ему было лень нахуй потратить 15 минут на то чтоб по очереди все отключать ища проблему, просто пиздец.
Зато срался в треде за десятерых считая себя правым.
254 982557
>>2555
Ну да если забыть хуеву гору часов копешения в скриптах в которых как я думал была ошибка то да. Лень пиздец было. А то что все решилось бездумным перебором никак не связанных объектов это осознанный труд. Я тебя понял.
255 982561
>>2557
Так а хули ты хотел если ворвался в тред с претензий и отрицал самое простое и очевидное решение? Что ты ожидал?
У тебя не какая-то ультра редкая ошибка или похожий кейс.
Например в юньке есть редкие баги которые нельзя воссоздать, но обычно они решаются простым перезапуском юньки.

Твой же кейс был такой очевидный и простой для всех, что тебе сразу указали на путь решения проблемы.
Ты начал охуевать и говорить что все тупые и не понимают, на что очевидно был обоссан и правильно.
256 982568
>>2557

> Ну да если забыть хуеву гору часов копешения в скриптах в которых как я думал была ошибка то да.


Не, тут ты объективно не прав, просто таой подход не верен и не ведёт тебя к решению проблемы.

Смотри в чём твоя ошибка:
1. У тебя есть нечто, не известно работающее или нет
2. Ты добавляешь к этому нечту что-то новое
3. Ничего не работает, и ты винишь пункт 2

Как делать надо:
1. Проверит работоспособность нечта на начальном этапе
2. Впилить в него инпут систему

Или:
1. Сделать минимальный супер простой работающий пример без инпут системы
2. Добавить туда инпут систему
3. Добавить инпут систему
257 982569
>>2568

> 3. Добавить инпут систему


Добавить инпут систему в масштабное нечто

Короче бля надо сужать область поиска проблемы это база насколько это возможно, а тупой перебор(я не про отклбчение гейм обдектов, а про шаманство со скриптами которое как я понял ты без понимания делал) - только когда область поиска сужена на максимум.
1.jpg27 Кб, 388x164
258 982580
>>2540
>>2542
Короче трабла так и не решилась, поставил vs code и эта хрень тоже тупо не работает и не может найти sdk хотя все скачал и поставил.
Ебаный кал и пердолинг, мне игру надо делать а не ебаться с ide бесконечно.
Чо там еще осталось rider затестить поставить, помню давно ставил тоже нихуя не работало. Почему из всего дерьма только студия работает, заебло.
259 982581
>>2580
а ты открой командную строку и напиши dotnet --info
260 982582
>>2580
нет сдк скачай с сайта микрософт дура больная
261 982585
>>2581
>>2582
Ой как смешно, я уже качал отдельно по ссылке которую и дает vs code, затем пробивал по цмд где стоит это было програм файлс, перезагружал комп, этот кал всеравно ничего не видет, а еще дрочил расширения по кругу в самом vs code, дот нет, с# и юнити пакедж.
Пиздец вы забавные, я пару часов гуглил эту траблу.
262 982594
>>2585
у тебя не установлено расширение для unity для visual studio. или ты используешь старую версию, которая создает старую версию c# проекта.
263 982600
>>2594
В смысле не установлена, все стоит в юньке, или как по твоему оно работало до этого.
264 982667
>>2600
Для вскод и встудия отдельные пакаджи
265 982670
>>2667
Нихуя, в юньке лишь один есть.
266 982674
>>2670
Да, вроде с шестой версии теперь объединены. Я ебу какая у тебя версия
267 982677
>>2674

>Я ебу какая у тебя версия


Ты из тех додиков которые не юзают ласт версию, а сидящих на старом говне мамонта?
268 982698
>>2677
Видно у тебя нет проекта который не был начат вчера блять.
269 982775
У меня релоад домеин идет по полторы минуты. Это мне нужно колдунски все по асембли калу размазывать, чтобы было быстрее или что?
270 982777
>>2775
Странно.
Релоад домеин это не компиляция, не знаю будет ли профит от деления на ассембли, думаю нет.

Edit, Project Settings, Editor, Enter Play ModeOptions галочку поставь и убери Reload Domain.

Но учти, что Reload Domain релоадит статику, поэтому если ты так сделать static int yoba;
yoba = 5;
То при перезапуске сцены это значение останется.
херь.png1,3 Мб, 1585x530
271 982883
Я не понимаю как работает Height Map в URP.
Оно не делает ничего подобного как тут https://docs.unity3d.com/Manual/StandardShaderMaterialParameterHeightMap.html
У меня, какую бы хейгхт мапу я не использовал, она просто сдвигает части текстуры куда-то вбок и всё. Не вглубь, а вбок, и на положение камеры никак не реагирует. Текстуру импортировал и обычную и в грейскейле, и сРГБ галку ставил/снимал и всё делал. Ебанина какая-то.
272 982984
Ну что, перекатились на шестерку?
273 982993
Привет. Уже скачал Юнити-хаб и запустил чей-то проект с гитхаба.
Почему редактор такой медленный на мобильном i7-8750H и GTX2060 (Win11).
На Линуксе пошустрее?
274 982997
>>2775
У меня как раз с кучей ассемдефов была пиздец долгая компиляция. Без них - шустро.

>>2883
В настройках текстуры не забыл выбрать, что это нормалмап?

>>2984
Теперь ждём семёрку и уж тогда-то точно начинаем игры делать.
275 983054
Как вы реализовуете воду? В плане тригера, вот я прилепил колайдер isTrigger = true. И все хорошо, но как адекватно персонажем переходить в стейт плаванья, если делать проверку в обжекте воды на onTriggerEnter то как только персонаж кончиком ноги в эту воду попадает идет тригер, я хотел проверять рейкастом на персонаже, есть ли на достаточной высоте вода, но рейкаст не видит колайдеры с isTrigger = true. Так вот, что в этой ситуации делать? Как знать когда игрок оказался в воде на достаточной глубине, а не только край колайдера задел
276 983072
>>3054
Можно сделать коллайдер не триггером, а ращместить его в другом слое.
В настройках сделать, чтобы этот слой ни с чем не взаимодействовал.
277 983091
>>2984
Накатил, в редакторе при запуске игрульки от любого чиха фпс падает, от инпута, от движений мыши, если над рамками окон редактора, все дергается. Даже если, например, есть двигающийся по кругу куб, и в редакторе он выделен, в рантайме все лагает нахуй, снимаешь выделение перестает
278 983093
>>3091
Какой проц?
279 983096
>>3093
r9 7900.
В билде все хорошо, но в редакторе просто позорно. Реально от инпута лаги, даже если в скриптах нет инпута
280 983134
>>3054
Ну так у тебя персонаж состоит не из одного сплошного спрайта наверное, лепи чтобы проверял когда жопа в воде оказывается
281 983173
Кек, показалась черепушка в духе hollow knight
image.png84 Кб, 776x570
282 983174
Не забудь снять галочку, анон!
UnityTCRroYCFub.gif389 Кб, 1453x741
283 983177
Все когда-то бывает в первый раз. Сегодня например я в первый раз нарисовал 2d рисунок, и впервые в самом юнити с помощью 2D Animation поставил кости и заанимировал их
284 983216
>>3177
тоже норм, но очевидно одну единственную травинку ты не будешь использовать, а значит гораздо лучше шейдером анимировать - сильно процессор разгрузит
285 983226
>>3216

>гораздо лучше шейдером анимировать


Что-то на сеньорском

Вообще я 2д платформер пилю, в камеру попадет мало анимированных объектов
286 983653
Unity thread RIP
????-2024
Земля пухом
288 984066
Да как же заебало, поставил студию, поставил плагин для юньки, в юньке стоит расширение для студии и всеравно хуита не может нормально работать, какого хуя нахуй.
Вот прям ща хоть бери да накатывай комьюнити 2019 года которая работала как часы.
289 984071
>>4066
Какая у тебя версия юнити
290 984077
>>4071
Последняя, 6000.0.26f. Регенерат в перференсах делал. Тупо кучу нативных слов которые должны поддерживаться не видит.
291 984078
>>4066
Я не знаю, в чем у тебя проблема.
Я обысно делал так:
1. Устанавливаю вижуал студиж, ставлю галочку юнити
2. Устанавливаю юнити хаб, во вкладке инсталлс выбираю нужную мне версию, отжимаю галочку об установке вижуал студии

Всё.

Я это делал не меньше 10 раз, и не только для себя, на самых разных компах. Ни разу не было такой проблемы.
292 984080
>>4078
Дак вот у меня 100 лет тоже все работало, и не раз, кучу раз перестанавливал, а не давно началась такая шляпа, и хрен знает куда копать.
293 984086
>>4080
Ты когда открываешь проект, должен быть где-то список ошибок, почему проект не загрузился
294 984088
>>4086
0 ошибок, я бы заметил если бы хоть одно предупреждение было, не говоря об ошибках.
Или там, где-то тихо без палево в спрятанный лог файл что-то пишется?
295 984094
>>4088
Не знаю как в visual studio, но в vs code во вкладке output можно выбрать c#, там есть лог
296 984124
Не использую студию, использую вскод.
Все равно я использую 1% от всех возможностей
297 984136

>использую вскод


Пытался юзать вскод для юнити, нихрена не работает.
298 984167
>>4066
студиоблядки страдают, это норма, а всё почему? потому что не хотят ставить vs code
299 984185
>>4136

>нихрена не работает


у дегенератов нихрена не работает
300 984320
Если бы не было vscode каким редактором вы бы пользовались
301 984324
>>4320
ебаное ты уёбище, множество гайдов есть на ютубе как заставить работать вс код с юнити
302 984325
>>4320

>vscode


Сумасшедший что ли? Для юнити только райдер, теперь бесплатный есть
303 984393
>>4325
Слишком тяжёлый
304 984395
>>4393
И что теперь? Из за веса будешь отказываться от охуенного инструмента?
305 984429
>>4393
Юнити слишком тяжелый движок ёпта
306 984652
Где можно скачать исходный код юнити без регистрации и смс?
307 984658
>>4652
В офисе юнити
308 984674
>>4652
У меня есть, могу в личку кинуть.
image.png37 Кб, 535x162
309 984678
>>4652
ты?
prkl.png405 Кб, 615x765
310 984695
>>4678
Я говорю об утекших исходниках. Где их можно достать.
311 984711
>>4695
Зачем
image.png137 Кб, 570x314
312 984815
пацаны, такой вопрос... Стоит ли тратить время на изучение английского языка, если я не претендую на сеньора и не хочу работать на зарубежных kabanchikov и не планирую жить за бугром.
В гугле на русском тоже находятся нормально ответы. И по шарпу есть, и по графону на хабре...
Да и нейросеть норм дает ответы.
Просто изучение анга все же требует много времени и ресурсов, так вот и сомневаюсь, стоит ли. Время, затраченное на английского я бы лучше потратил на изучение юнити, шарпа, ecs там и т.п.
313 984819
Ну для себя я уже решил не изучать, но может услышу контраргументы
314 984822
>>4815
Доки все на англюсике, всё равно хотя бы небольшой уровень лучше иметь.
315 984823
>>4822
В браузере жму правый клик -> перевести страницу на русский.
Вряд ли я переведу лучше, чем машинный нейросетевой перевод от гугла
316 984846
хуя долбоёбы, язык сам должен был выучиться, если бы вы хотя бы играли в игры на английском
317 985235
Посоветуйте хороший курс по unity для начинающих, с меня нихуя.
image.png159 Кб, 324x400
318 985311
Посаны, здорово.
Решил в пажилом возрасте вкатиться в ваш уютненький юнити.
До этого пробовал godot, но что-то в нём отталкивает, хз что именно, мб gdscript, мб недавние срачи, мб то, что у них там с версиями пиздец каждый раз происходит при обновах и все сидят тупа либо на 3, либо на 4.
Короче, заебало.
Сейчас тихонько заканчиваю курс по блендеру, чтобы уметь делать простенькие модельки ps1 style с ригами, ищу для юнити книжки.
Упал глаз на это, что скажете?
Вроде, многие говорят, что годнота, просто и понятно.
Сам по бэкграунду сетевик, если что, немного фронт ковырял, с дотнетом знаком слабо, как и с оопшными языками, если писал скрипты, то на го, либо на питоне. А вообще баш наше всё.
TLDR:
Learning C# by Developing Games with Unity by Ferrone H.
Годная книга для вкатывания тому, кто за c#, ооп и unity не шарит?
319 985343
>>5311
Норм. Главное практикуйся каждый день. Книга без практики супер бесполезная.
320 985350
Я могу игру по типу фнафа склепать на юнити относительно просто?
321 985357
>>5350

>Я могу


не можешь
322 985359
>>5357
Почему?
323 985372
>>5359
Сможешь
324 985524
error CS0246: The type or namespace name 'Controls' could not be found (are you missing a using directive or an assembly reference?)
И как контрить эту хуйню? знаю что нужен неймспейс но какой? полинтернета провылазил ваще хз
image.png49 Кб, 955x539
325 985527
>>5524

>полинтернета провылазил ваще хз


Устанавливай пакет Input System.
326 985530
>>5524
Покажи код, объясни почему ты решил написать слово Controls, или где ты взял чужой код с этим словои.
327 985566
>>5527
Бля пиздец мне только первая ссылка попалась спасибо тебе анончик
>>5530
https://skillbox.ru/media/gamedev/sozdayem_prostuyu_3d_gonku_na_unity/
328 985584
>>5311
Книгу не читал, но от одного названия порвало немного
Если видел шарп только из юнити, то понятия о нем будут вообще пиздец неверные, точно так же как и ебанаты которые хорошо знают шарп и приходят руководить юнити девами, и в первую очередь пытаются отказатсья от апдейт
image.png18 Кб, 901x144
329 985587
почалось...
330 985629
>>5584
Что по шарпу посоветуешь почитать?
331 985631
>>5584

> Если видел шарп только из юнити, то понятия о нем будут вообще пиздец неверные


Схуяли?
У шарпа в юнити только одна проблема - тебе чтобы игру запустить надо кнопку плей нажать, компиляция будет дольше чем в вижуал студии сразу. Не удобно так азы изучать.

> точно так же как и ебанаты которые хорошо знают шарп и приходят руководить юнити девами


Хм?

> и в первую очередь пытаются отказатсья от апдейт


Шо?

>>5629
Metanit, первые несколько глав для начала. Дальше можно идти в юнити
332 985641
оказывается ил2спп не может в процесс старт... кек лол хех мда
333 985642
>>5641
А зачем оно тебе надо?
334 985668
Сегодня я узнал, что в Юнити есть ЕЩЁ ОДНА система GUI
https://docs.unity3d.com/Packages/[email protected]/manual/index.html

Внутренний продукт и работоспособность не гарантируется, но можно использовать.
335 985691
>>5668
это буквально очередной сэмпл для тулкита, но красивый
336 986052
Анончики, скиньте Final IK по-братски!
image.png143 Кб, 700x879
337 986171
Готовы выпускать игры на юнити?

Самое интересное, то что юнити знает всех, кто работает над проектом и все ассеты этого проекта.

https://www.reddit.com/r/Unity3D/comments/1h07q5n/unity_accounts_suspended_after_releasing_our/
338 986173
>>6171
https://reddit.com/r/Unity3D/comments/1h07q5n/unity_accounts_suspended_after_releasing_our/lz3sifm/
Новая фобия получена:
1. Ты сделал игру и начал продавать
2. Кто-то ее декомпилировал, выпустил свою игру или мод
3. Злоумышленник получил бан, например за подозрительные дествия
4. Юнити банит тебя автоматом, потому что твой код совпал с кодом злоумышленника.
Красиво.
339 986176
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class Road : MonoBehaviour
{
public List<GameObject> blocks; //Коллекция всех дорожных блоков
public GameObject player; //Игрок
public GameObject roadPrefab; //Префаб дорожного блока
public GameObject carPrefab; //Префаб машины NPC

void Update()
{
float z = player.GetComponent<Moving>().rb.position.z; //Получение положения игрока

var last = blocks[blocks.Count - 1]; //Номер дорожного блока, который дальше всех от игрока

if(z > last.transform.position.z - 100f * 1f) //Если игрок подъехал к последнему блоку ближе, чем на 10 блоков
{
//Инстанцирование нового блока
var block = Instantiate(roadPrefab, new Vector3(last.transform.position.x, last.transform.position.y, last.transform.position.z + 100f), Quaternion.identity);
block.transform.SetParent(gameObject.transform); //Перемещение блока в объект Road
blocks.Add(block); //Добавление блока в коллекцию

}

void OnTriggerEnter(Collider collision)
{
if(collision.gameObject.tag=="Road")
Destroy(gameObject);
}
}
}

Как пофиксить??? Нужна бесконечная дорога но участки только добавляются но не удаляются нихуя
339 986176
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class Road : MonoBehaviour
{
public List<GameObject> blocks; //Коллекция всех дорожных блоков
public GameObject player; //Игрок
public GameObject roadPrefab; //Префаб дорожного блока
public GameObject carPrefab; //Префаб машины NPC

void Update()
{
float z = player.GetComponent<Moving>().rb.position.z; //Получение положения игрока

var last = blocks[blocks.Count - 1]; //Номер дорожного блока, который дальше всех от игрока

if(z > last.transform.position.z - 100f * 1f) //Если игрок подъехал к последнему блоку ближе, чем на 10 блоков
{
//Инстанцирование нового блока
var block = Instantiate(roadPrefab, new Vector3(last.transform.position.x, last.transform.position.y, last.transform.position.z + 100f), Quaternion.identity);
block.transform.SetParent(gameObject.transform); //Перемещение блока в объект Road
blocks.Add(block); //Добавление блока в коллекцию

}

void OnTriggerEnter(Collider collision)
{
if(collision.gameObject.tag=="Road")
Destroy(gameObject);
}
}
}

Как пофиксить??? Нужна бесконечная дорога но участки только добавляются но не удаляются нихуя
340 986205
>>6176
Ты вообще шаришь в программировании?
341 986209
>>6176

>void Update()


>GetComponent


Японский стиль программирования, ценю!

Но по сути, положение игрока тебе нахуй не нужно
Коллайдер у тебя проверяет блок в блоке, а не игрока в блоке из не понятно откуда, а должен проверять из игрока встру с блоком или из блоков встречу с игркоами. Там же дистанцию где игрок и где последний блок проверять можно, хули
А так охуенно
342 986218
>>6205
Не, отсюда брал
>>5566

>>6209
Там код так выглядел после инстанцирования
foreach (GameObject block in blocks.ToList())
{
bool fetched = block.GetComponent<RoadBlock>().Fetch(z); //Проверка, проехал ли игрок этот блок

if(fetched) //Если проехал
{
blocks.Remove(block); //Удаление блока из коллекции
block.GetComponent<RoadBlock>().Delete(); //Удаление блока со сцены

}
}
}
Но проблемав том что таким образом у меня выпиливается сам префаб через блок и он перестаёт ехать вообще потому что файл найти не может
343 986221
>>6176
Хотел, расписать почему ты маслёнок, потом вспомнил, что меня здесь постоянно обвиняли в том что я самоутверждаюсь за счёт маслят и решил вообще ничего не писать

Помогать вам только время тратить.
344 986223
>>5311
Одна из лучших, тем более новое издание, бери не пожалеешь.

>>5584
Если видел шарп только из юнити, то понятия о нем будут вообще пиздец неверные, точно так же как и ебанаты которые хорошо знают шарп и приходят руководить юнити девами, и в первую очередь пытаются отказатсья от апдейт

Маня прекращай бредить. Освой уже эвенты и делегаты и прекращаю всю хрень пихать в апдейт.
345 986317
>>6221
Когда мнишь себя Абдулем, а на деле стухшая утка.
346 986325
>>6223

> Если видел шарп только из юнити, то понятия о нем будут вообще пиздец неверные, точно так же как и ебанаты которые хорошо знают шарп и приходят руководить юнити девами, и в первую очередь пытаются отказатсья от апдейт


Так почему, я так и не понял?
Сишарп он везде сишарп.

Руководить юнити девами шарпист не может не мотому что у него сишарп не тот, а потому что у него нет знаний об архитектурных решениях специфичных для геймдева и о взаимодействии между программистами и другими отделами.
А по сишарп коду фидбек дать сможет, ну не считая оптимизаций специфичных для юнити.

А наличие/отсутствие апдейта это чисто архитектурный подход, оба имеют право на жизнь.
347 986348
>>6325
В шарпе, да и вообще куче языков программирования, проверка на null считается страшным зашкваром поскольку должен с самого писать так чтобы его не получать никогда, не важно насколько большой проект(люди все равно делают). В юнити, да и любом другом игровом движке она очень часто обязательна поскольку игроки все равно изловчатся и получат его, особенно когда в дело вступают их внешние скрипты
как пример
348 986355
>>6348
Если ты удалишь объект со сцены, то обязательно появится скрипт, который ссылается на этот объект, поэтому желательно всегда проверять на null или не удалять, а прятать объекты.
Я не знаю, шутка это или нет, но в скайрим и семействе игр есть всегда определённая комната в которую помещают все трупы, убитые играком, думаю по этой причине.
349 986370
>>6348
Угу таким "страшным" что во всех мейнстрим языках добавили оператор ?.
Давно никто не "боится" null кроме крестовиков, у всех это просто еще одно возможное значение.
350 986377
>>6348

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


Бред полный.

Игроки не изловчатся и не получат, это изначально вопрос архитектурных принципов пооекта.

Приведи любой пример где необходима проверка на null в юнити, я тебе перепишу его и это останется кодом на юнити.

На всякий случай сразу пример который я думаю ты имел в виду под "внешними скриптами":

Было
var a = GetComponent<Govno>();
if (a != null) ...

Стало
if (TryGetComponent<Vovno>(out var a)) ...

Другими словами, необходимость проверки на null отпадает, когда выполнена проверка сама исключающая это и когда на проекте есьь соглашение - вызывать методы только когда гарантировано что передаваемые туда аргументы без null.

По поводу зашквара тоже вопрос есть. В сишарпе есть куча всего где может вылезать null defaul, FirstOrDefault - вот тебе и null, чего в этом плохого - хз.
Это просто вопрос архитектуры, можно писать без null, можно с null, у обоих вариантов свои плюсв и минусы.

>>6355

> Если ты удалишь объект со сцены, то обязательно появится скрипт, который ссылается на этот объект, поэтому желательно всегда проверять на null или не удалять, а прятать объекты.


Если я удалю объект со сцены, то мой сишарп код сразу там же оповестит об этом необходимые системы прямо перед удалением. И не важно, разрешены ли проверки на null в проекте - в обоих случаях все системы будут оповещены.

Так как если этого не происходит - это хуевый дизайн и может привести к неопределенному поведению или неожиданным ошибкам.

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


Не имеет связи с данной проблемой и необходимости никакой в этом нет.
350 986377
>>6348

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


Бред полный.

Игроки не изловчатся и не получат, это изначально вопрос архитектурных принципов пооекта.

Приведи любой пример где необходима проверка на null в юнити, я тебе перепишу его и это останется кодом на юнити.

На всякий случай сразу пример который я думаю ты имел в виду под "внешними скриптами":

Было
var a = GetComponent<Govno>();
if (a != null) ...

Стало
if (TryGetComponent<Vovno>(out var a)) ...

Другими словами, необходимость проверки на null отпадает, когда выполнена проверка сама исключающая это и когда на проекте есьь соглашение - вызывать методы только когда гарантировано что передаваемые туда аргументы без null.

По поводу зашквара тоже вопрос есть. В сишарпе есть куча всего где может вылезать null defaul, FirstOrDefault - вот тебе и null, чего в этом плохого - хз.
Это просто вопрос архитектуры, можно писать без null, можно с null, у обоих вариантов свои плюсв и минусы.

>>6355

> Если ты удалишь объект со сцены, то обязательно появится скрипт, который ссылается на этот объект, поэтому желательно всегда проверять на null или не удалять, а прятать объекты.


Если я удалю объект со сцены, то мой сишарп код сразу там же оповестит об этом необходимые системы прямо перед удалением. И не важно, разрешены ли проверки на null в проекте - в обоих случаях все системы будут оповещены.

Так как если этого не происходит - это хуевый дизайн и может привести к неопределенному поведению или неожиданным ошибкам.

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


Не имеет связи с данной проблемой и необходимости никакой в этом нет.
351 986380
>>6377

>Игроки не изловчатся и не получат


Ну если ты игры не делал до конца и не выпускал, конечно не получат.

>Было


>var a = GetComponent<Govno>();


>if (a != null) ...


>Стало


>if (TryGetComponent<Vovno>(out var a)) ...


Так это та же самая проверка на null, но не суть важно

>Приведи любой пример где необходима проверка на null в юнити


Любое действие с интерфейсом где игрок при настройке мышки может пропустить шаги. Пример: при наведении мышки на игрока интерфейс высвечивает информацию( не важно через гет компонент, прямой ссылкой или молитвой аллаху) и разблокирует кнопку строительства которое меняет значение по умолчанию(не null, просто черный квадрат который был одним из значений), уже лет двадцать как любой еблан может через простой макросс/скрип на мышке влезть туда быстрей чем юнити(да и тот же анриал если про ++) у тебя это полностью отработает
Где собственно и нужен твой, чтобы спастись и не получить то значение которого там точно быть не должно

>if (TryGetComponent< Govno>(out var a)) ...

352 986384
>>6380

> Так это та же самая проверка на null, но не суть важно


А, вот как.
А в чём тогда прикол?
От проверки на null обычно если отказываются, то отказываются не под капотом, а в коде проекта. И делается это с простой целью - перенести предварительные сейвовые проверки как можно выше по стеку и соответственно не перегружать код проверками на null в каждой функции.
А не ради того чтобы просто null не было.

А покажи мне как на сишорпе писать, чтобы не иметь проверок на null. Подкапотных проверок на null там хватает, так, если что.

Как перкпишешь
if (items.Any())
{
var a = Items.First();
}
?
Это ж тоже считай та же самая проверка на null.

А diconary.TryGetValue или dictionary.ContainsKey - это тоже проверки на null? Как их избежать тогда?

> Пример: при наведении мышки на игрока интерфейс высвечивает информацию( не важно через гет компонент, прямой ссылкой или молитвой аллаху) и разблокирует кнопку строительства которое меняет значение по умолчанию


А где необходимость в null?

public class InfoDisplay
{
public void SetData(DisplayData data)
{
...
}
}

Что делать если надо отобразить ничего?
infoDisplay.SetData(DisplayData.Empty);
Где Empty это статический инстанс класса DisplayData с вбитыми значениями.

Если бы мы писали код с null, то внутри SetData была бы проверка на null. Но мы пишем без налл, поэтому у нас её нет и вместо этого заведён пкстой объект.

Как получить данные эти?
Ну например
if (Physics.Raycast ...
if (collider.TryGetComponent<DisplayInfoContainer>()....
352 986384
>>6380

> Так это та же самая проверка на null, но не суть важно


А, вот как.
А в чём тогда прикол?
От проверки на null обычно если отказываются, то отказываются не под капотом, а в коде проекта. И делается это с простой целью - перенести предварительные сейвовые проверки как можно выше по стеку и соответственно не перегружать код проверками на null в каждой функции.
А не ради того чтобы просто null не было.

А покажи мне как на сишорпе писать, чтобы не иметь проверок на null. Подкапотных проверок на null там хватает, так, если что.

Как перкпишешь
if (items.Any())
{
var a = Items.First();
}
?
Это ж тоже считай та же самая проверка на null.

А diconary.TryGetValue или dictionary.ContainsKey - это тоже проверки на null? Как их избежать тогда?

> Пример: при наведении мышки на игрока интерфейс высвечивает информацию( не важно через гет компонент, прямой ссылкой или молитвой аллаху) и разблокирует кнопку строительства которое меняет значение по умолчанию


А где необходимость в null?

public class InfoDisplay
{
public void SetData(DisplayData data)
{
...
}
}

Что делать если надо отобразить ничего?
infoDisplay.SetData(DisplayData.Empty);
Где Empty это статический инстанс класса DisplayData с вбитыми значениями.

Если бы мы писали код с null, то внутри SetData была бы проверка на null. Но мы пишем без налл, поэтому у нас её нет и вместо этого заведён пкстой объект.

Как получить данные эти?
Ну например
if (Physics.Raycast ...
if (collider.TryGetComponent<DisplayInfoContainer>()....
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее