Результаты поиска
| |
killing002 | Дата: Понедельник, 05 Февраля 2024, 00:24 | Сообщение # 1 | Тема: Смена префаба выстрела при смене оружия |
почетный гость
Сейчас нет на сайте
| Как вариант - разделить дату предметов на статическую и динамическую. Все статические данные закинуть в scriptableObject'ы и настраивать эти ассеты в редакторе. Для разных префабов проджектайлов просто создать разные ассеты.
123
|
|
| |
killing002 | Дата: Понедельник, 05 Февраля 2024, 00:19 | Сообщение # 2 | Тема: Как сместить поворот камеры? |
почетный гость
Сейчас нет на сайте
| С Cinemachine ознакомься. Он покрывает твою проблему и никакого кода писать не надо. Ютуб в помощь.
123
|
|
| |
killing002 | Дата: Понедельник, 05 Февраля 2024, 00:17 | Сообщение # 3 | Тема: Unity: триггер и запуск анимации по времени |
почетный гость
Сейчас нет на сайте
| Цитата Ovad ( ) animator.Play("OpenDoors"); Самое простое это корутины. Запихни эту строчку в корутину и вызывай ее в своих Триггерах. В ютубе 1кк видосов про это.
123
|
|
| |
killing002 | Дата: Суббота, 03 Июня 2023, 20:27 | Сообщение # 4 | Тема: Zenject не инжектит Construct |
почетный гость
Сейчас нет на сайте
| Цитата ArtemS ( ) Короче. инъекция не работает в инстанциированном префабе..тема закрыта) Если использовать Gameobject.Instantiate то да. Нужно использовать фабрики внутри zenjecta для этого.
123
|
|
| |
killing002 | Дата: Суббота, 03 Июня 2023, 13:14 | Сообщение # 5 | Тема: Как сделать так чтобы частицы обтекали объект при сталкивани |
почетный гость
Сейчас нет на сайте
| 1) С помощью старой системы частиц - наверно лучше и не пытаться это делать. С новой системой все получится: Огонь с помощью VFX Graph 2) Ну а вообще, такой эффект лучше с помощью шейдеров делать. Огонь с помощью шейдера
123
|
|
| |
killing002 | Дата: Суббота, 03 Июня 2023, 12:12 | Сообщение # 6 | Тема: Проблема с 3д анимацией в юнити |
почетный гость
Сейчас нет на сайте
| Добрый день. Имеется следующая анимация: .gif В юнити специально замедлил анимацию, чтобы можно было увидеть дергание правой ноги. А точнее она делает поворот в 360 градусов вокруг оси. И что самое странное, это все происходит на 34 кадре. Как такое возможно? Если проверить анимацию по кадрово в самом юнити(окно <animation>), то этот эффект не проявляется. Но если в этом же окне <animation> нажать плей, то дергание проявится на 34 кадре.
Как я понял, что всё происходит в одном кадре? -> в превью анимации можно увидеть, что нога дергается в течении 34 кадра (снизу гифки информация об текущем кадре и проценты длительности анимации) .gif
Есть у кого варианты, что это такое?
Настройки анимации: .png
(я не умею загружать картинки и гифки
123
Сообщение отредактировал killing002 - Суббота, 03 Июня 2023, 13:23 |
|
| |
killing002 | Дата: Вторник, 23 Марта 2021, 17:58 | Сообщение # 7 | Тема: Что то не так с системой корутин.. |
почетный гость
Сейчас нет на сайте
| Цитата BOOM ( ) Подожди, а где у тебя прерывания корунтина командой yield? Короче, как я понял, у тебя просто функция корунтина заканчивается и он, естественно, сборщиком тупо удаляется. То есть ты считаешь, что у меня в корутинах нет yield.. Ты же понимаешь, что мне фреймворк не даст не прописать yield в Ienumerator.
Цитата BOOM ( ) Советую сделать цикл в функции корунтина: Не понял причем тут циклы..
Цитата BOOM ( ) Лучше познакомься с корунтинами. И вообще, думаю, тебе они в твоём случае не нужны А как ты предлагаешь еще реализовать выполнение последовательных действий нпс, если не брать в счет корутины и UniRx?
Цитата BOOM ( ) И функции передвижения запрятал бы в простом FixedUpdate - рассмотри этот вариант. Дело то не в самих методах..) А в выполнении последовательности методов .. Ты видимо не дочитал мои "объяснения, которые я запостил отдельными кусками"..))
123
Сообщение отредактировал killing002 - Вторник, 23 Марта 2021, 17:58 |
|
| |
killing002 | Дата: Воскресенье, 21 Марта 2021, 15:35 | Сообщение # 8 | Тема: Что то не так с системой корутин.. |
почетный гость
Сейчас нет на сайте
| Цитата maker-rus ( ) Если у вас скрипты по 1к строк Это гипербола, товарищ рэббит. Если вы не заметили диалог завелся в общем ключе, извольте не проецировать это на определенную душу.
По поводу новостей, прошу вас, оставьте их при себе).
Цитата maker-rus ( ) что решением было не смена структуры хранения И какая же "структура хранения данных" должна быть, позвольте узнать.
Цитата maker-rus ( ) Могли бы просто процитировать сюда свое решение. Поступать просто - мое табу
123
Сообщение отредактировал killing002 - Воскресенье, 21 Марта 2021, 15:43 |
|
| |
killing002 | Дата: Среда, 17 Марта 2021, 18:02 | Сообщение # 9 | Тема: Что то не так с системой корутин.. |
почетный гость
Сейчас нет на сайте
| А что, люди любят ковыраться в целых скриптах в 1к строк?
123
|
|
| |
killing002 | Дата: Среда, 17 Марта 2021, 13:07 | Сообщение # 10 | Тема: Оптимизация графики. Прорисовка объектов на расстоянии. Свет |
почетный гость
Сейчас нет на сайте
| Хм, да ты прав. У меня почему с понятием "динамические объекты" ассоциируется все то, что управляется скриптами.
123
|
|
| |
killing002 | Дата: Среда, 17 Марта 2021, 11:58 | Сообщение # 11 | Тема: Оптимизация графики. Прорисовка объектов на расстоянии. Свет |
почетный гость
Сейчас нет на сайте
| Цитата drcrack ( ) юнити и так не будет рисовать обьекты за его пределами Отрисовываться не будут, это верно. Но скрипты то просчитываться продолжат.
123
|
|
| |
killing002 | Дата: Вторник, 16 Марта 2021, 17:29 | Сообщение # 12 | Тема: Оптимизация графики. Прорисовка объектов на расстоянии. Свет |
почетный гость
Сейчас нет на сайте
| Уменьшать уровень детализации объектов можно при помощи LOD'ов. Скрывай динамические объекты скриптом, проверяя находится ли объект в пределах камеры или нет.
Юнити скорее всего работает с треугольниками и поэтому тебе кажется, что полигоны увеличились. Полигонов столько же, просто юнити считает треугольники. С запеканием света давно не работал, но там все должно быть нормально, потыкай тщательнее. Если не помогает качай новую версию юнити
123
|
|
| |
killing002 | Дата: Вторник, 16 Марта 2021, 15:22 | Сообщение # 13 | Тема: Что то не так с системой корутин.. |
почетный гость
Сейчас нет на сайте
| Приветствую всех.
Написал микро менеджер последовательных действий, через корутины. Хотя это даже менеджером нельзя назвать, но суть не в этом. Ситуация такая - Нпс при старте заполняет лист ienumerator'ов действиями которые он хочет последовательно производить(это как бы его цикл действий по уровню) и вызывает StartCoroutine (Это обертка на обычный запуск корутин, но перед этим он делает кое-что)
Код countOfPoints = targets.Length;
for (int i = 0; i < countOfPoints; i++) { nativeQueueEnumerators.Add(goToPoint(aipath, setter, targets[i])); nativeQueueEnumerators.Add(rotateToTarget(setter, targets[i])); nativeQueueEnumerators.Add(waitAFewMoment(setter, _waitingTime)); }
StartCoroutine(setter); // вызов функции
Тут происходит заполнение этого листа. Из названий методов, которые добавляются в очередь (в реальности же, эта очередь реализована листом), видно что происходит. Тут присутствует цикл, из-за того, что точек к которым нпс идет - несколько. То есть, нпс подошел -> повернулся в определенную сторону -> подождал и поновой, но только с другой точкой уже. Все эти действия реализованы через запуски корутин. То есть, каждое действие при окончании себя, вызывает следующее из очереди.
Код protected List<IEnumerator> nativeQueueEnumerators = new List<IEnumerator>(); protected Queue<IEnumerator> queueEnumerators = new Queue<IEnumerator>();
queueEnumerators является очередью, с которым взаимодействую все действия. nativeQueueEnumerators это лист, который хранит все действия на которые подписался нпс изначально(при старте). Нужен он затем, что вызов происходит следующим образом:
Код
StartCoroutine(queueEnumerators.Dequeue());
То есть вызывается корутина, но при этом удаляется это действие из очереди, и в итоге при проходе одного цикла, то есть когда нпс пройдет все точки сделает все повороты и т.д, ему нужно вернуться в первую точку и начать все с начало, и для этого и нужен nativeQueueEnumerators, в очередь queueEnumerators, опять можно засунуть все те действия и опять начать цикл без нашего вмешательства. Надеюсь понятно объяснил, теперь к проблеме, а она заключается в следующем -> Проблема в том, что первый цикл работает нормально, нпс проходит все точки и т.д, и когда приходит время возвращаться в начало, то есть происходит добавление всех начальных действий в queueEnumerators из nativeQueueEnumerators .
Код protected void MoveNext(AIDestinationSetter setter) { if (queueEnumerators.Count == 0) // произошел глобальный цикл { SetStartsValues(); }
Coroutine cor = setter.StartCoroutine(queueEnumerators.Dequeue());
if (cor == null) Debug.Log("2 цикл не начинается по причине, что не запускается корутина "); }
Эта функция и запускает следующую корутину из очереди . Setter нужен, так как класс не наследует monobehavior, Условие cor == null, я вставил, что отследить, что происходит, и это условие активируется как после того, как queueEnumerators.Count станет равным нулю(условие выше), после чего произойдет SetStartsValues(),
Код private void SetStartsValues() { for (int i = 0; i < nativeQueueEnumerators.Count; i++) { queueEnumerators.Enqueue(nativeQueueEnumerators[i]); } }
Дальше корутина не вызовется, не понятно почему, то есть cor будет равен null, в консоль выдаст это сообщение и выйдет из функции и нпс просто остановится и все. Фуу, надеюсь вам понятно. Так вот в чем вопрос, почему корутина не вызывается, он просто проходит по ней и выдает null и все.Добавлено (17 Марта 2021, 11:26) --------------------------------------------- Что то форум погибает по-моему, либо все знающие заняты делами. В общем решение предложили на другом ресурсе и оно работает. Кому интересно почему корутины не вызываются дважды, то вам сюда: cyberforum.ru
123
Сообщение отредактировал killing002 - Вторник, 16 Марта 2021, 15:26 |
|
| |
killing002 | Дата: Воскресенье, 14 Марта 2021, 12:04 | Сообщение # 14 | Тема: CustomRange в SpriteMask и аналог оператора в Lua |
почетный гость
Сейчас нет на сайте
| Цитата alexsilent ( ) 1) можно ли кодом менять CustomRange в SpriteMask (скрипт спрайтовой маски)? Я нашёл в документации только isCustomRangeActive - как бы проверять активна ли эта опция, но как кодом сделать её активной не могу найти...
isCustomRangeActive является свойством и у него public set, через него и можно выставить в true Custom Range.
Код IsCustomRangeActive = true;
Цитата alexsilent ( ) 2) В Lua на Tic-80 был удобный оператор floor деления с float составляющей "//", есть ли аналог в юнити? Это записывалось так в Tic-80 на Lua:
Не понял, что значит деление с флоат составляющей.. Просто используй явное преобразование - (float). Если у тебя возникла ситуация под типу этой ..
Код int a = 5;
void Awake() { float c = a / 2; // c = 2 }
Но тебе нужен float на выходе..
Код int a = 5;
void Awake() { float c = a / 2.0f; // c = 2.5 }
Каких то специальных операторов в юнити нет. Не знаю помог ли или нет..
123
Сообщение отредактировал killing002 - Воскресенье, 14 Марта 2021, 16:51 |
|
| |
killing002 | Дата: Воскресенье, 14 Марта 2021, 11:42 | Сообщение # 15 | Тема: Автоматическая инициализация спрайтов в Unity |
почетный гость
Сейчас нет на сайте
| Как вариант юзать атласы.
Код public SpriteAtlas atlas; Sprite[] sprites = atlas.GetSprites();
Но тут придется drag n drop'ать атлас, но это лучше чем делать это со всем массивом спрайтов
123
Сообщение отредактировал killing002 - Воскресенье, 14 Марта 2021, 12:12 |
|
| |
killing002 | Дата: Суббота, 13 Марта 2021, 19:36 | Сообщение # 16 | Тема: Проблема при рисовании изометрии |
почетный гость
Сейчас нет на сайте
| В любой непонятной ситуации качай другую версию юнити.
123
|
|
| |
killing002 | Дата: Суббота, 13 Марта 2021, 11:43 | Сообщение # 17 | Тема: UniRx и Job system, дайте советов.. |
почетный гость
Сейчас нет на сайте
| Цитата drcrack ( ) Нет смысла делать многопоточность просто ради многопоточности, когда ты еще не знаешь, что именно будет тормозить игру Это многопоточность ради оптимизации. То, что будет тормозить очевидно - > всякие рейкасты и проверки и логика нпс.
Вот, что по поводу JobSystem.. Я тут некоторые тесты проводил над игрой, игрался с профайлером и т.д. И заметил, что без моего собственного вмешательства , а именно добавления Job'ов и тд. Некоторые процессы сами распараллеливаются.
Тут можно наблюдать во вкладке Job, что уже существуют worker'ы. То есть Job System уже потихоньку внедряется в Unity. Как видно из скрина или нет, но там распараллеливаются процессы аниматоров, канвасов , в общем не очень понятно ..
Начитался документации по UniRx, в общем нужен для асинхронных действий какого либо характера. Как понял, на треды тоже можно распределить определенный код, но все это окутано пока тайной для меня.. И что интересно UniRx и Job System друг с другом не совместимы.
123
Сообщение отредактировал killing002 - Суббота, 13 Марта 2021, 11:54 |
|
| |
killing002 | Дата: Суббота, 13 Марта 2021, 11:14 | Сообщение # 18 | Тема: Оптимизация скрипта. Update. Как правильно скриптовать? |
почетный гость
Сейчас нет на сайте
| Столько проверок в Update и еще такой скрипт в нескольких экземплярах в 1 кадре, да еще и на мобилки -> ну фпс 20-25 если не меньше обеспеченно. Для теста, просто заспавни штук 10 на сцене таких GO и запусти на мобилке своей и делай выводы, есть ли смысл существования этого скрипта или нет.. Если мобилки, то это сразу событийное программирование, чтобы избавиться от этих проверок в update, чем меньше проверок , да и в принципе кода в Update , тем лучше. Читай там про ивенты , делегаты..
123
|
|
| |
killing002 | Дата: Четверг, 11 Марта 2021, 15:05 | Сообщение # 19 | Тема: UniRx и Job system, дайте советов.. |
почетный гость
Сейчас нет на сайте
| Всех приветствую! При разработке проекта возникла ситуация.. Нужно, чтобы в кадре было много нпс, например возьмем толпы зомби. Очевидно, что все это будет тормозить, и я сразу подумал о многопоточности. Много статей перечитал, часто видел такие фразы как: "юнити не потокобезопасный", "все игры на юнити тормозят" и все в этом духе. Но тем не менее я наткнулся на такие термины как UniRx и Job system. Как я понял, система заданий все же позволяет разделить код на потоки, не весь код конечно, но все же. Читая о реактивном программировании, а именно о UniRx, я так понял, что оно тоже предполагает деление на потоки. И я теряюсь в том аспекте, - что же использовать, на что способен UniRx и тд. Документацию по UniRx пока не читал, хотелось бы узнать с начало об общих положениях. Заранее спасибо за ответ.
123
|
|
| |
killing002 | Дата: Вторник, 08 Сентября 2020, 14:05 | Сообщение # 20 | Тема: iTextSharp и юнити... |
почетный гость
Сейчас нет на сайте
| Да, вы правы. На ином ресурсе предложили один рабочий вариант. Если кому интересно, то вот, что в итоге получилось
Код path = System.IO.Path.Combine(Application.streamingAssetsPath, "test.pdf"); IEnumerator request() { UnityWebRequest www = UnityWebRequest.Get(path); yield return www.SendWebRequest(); if (www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { print(www.downloadHandler.data.Length); mm = new MemoryStream(www.downloadHandler.data); PdfReader reader = new PdfReader(mm); ITextExtractionStrategy strategy; testText.text = "IN"; Rectangle rect = new Rectangle(45, 0, 135, 150); RenderFilter filter = new RegionTextRenderFilter(rect); int q; for (int i = 1; i <= reader.NumberOfPages; i++) { strategy = new FilteredTextRenderListener(new SimpleTextExtractionStrategy(), filter); print(PdfTextExtractor.GetTextFromPage(reader, i, strategy)); testText.text = PdfTextExtractor.GetTextFromPage(reader, 1, strategy); } mm.Close(); } }
123
|
|
| |
|