[UNITY 5] How to make Snap Scrolling Menu (RUS) [1/2] - Hill Climb Racing

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ก.ย. 2024
  • In this video tutorial, I'll show you how to make the Snap Scrolling Menu (Scrolling menu with a snap). The lesson is divided into two parts.
    What we do in this part, you can see in the timecode list below ...
    ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
    💚 Thanks for the like and subscribtion! 💚
    ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
    Link to the script in description second part of tutorial.
    ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
    Timecodes:
    0:34 - Creating a base for scrolling menu.
    4:54 - Writing a script for creating panels in the scroll content.
    7:11 - Writing a script for position of panels.
    13:03 - Writing a script to find the nearest panel.
    16:54 - Creating Event Trigger for scrolling.
    ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

ความคิดเห็น • 110

  • @ANDROIDHELPERRU
    @ANDROIDHELPERRU  7 ปีที่แล้ว +1

    Если какие-то оговорки либо множественные повторения слов найдёте, то извиняюсь, ибо снимал импровизацией)

    • @Тимоха246
      @Тимоха246 7 ปีที่แล้ว

      я 1 лайк я 12 просмотр

    • @vvortex157
      @vvortex157 6 ปีที่แล้ว

      возможно это обусловлено твоей разверткой, но у меня все сбивается т.к. значение позиции нулевого элемента в старте не задается и равно vector2.zero, а в моем случае это не так.

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  6 ปีที่แล้ว

      Возможно не внимательно смотрели настройку UI

    • @vvortex157
      @vvortex157 6 ปีที่แล้ว

      да вроде все тоже самое, но я делал не на весь экран а в виде полоски в определенном месте...

    • @diegosuarez5473
      @diegosuarez5473 6 ปีที่แล้ว

      Можете ли вы рассказать мне, как я могу поместить разные панели?

  • @westparezal
    @westparezal 5 ปีที่แล้ว +15

    12:48 "FixedUpdate обновляется за счёт FPS" - неправда, FPS как раз влияет на Update, а FixedUpdate каждый физ. Шаг обновляется с равными промежутками.

  • @yaseenkhattak1845
    @yaseenkhattak1845 5 ปีที่แล้ว +6

    Nice tutorial i had to watch with the subtitles but still managed to understand everything....would appreciate English voice tho :D. Cheers !

  • @MusicsforRelaxation
    @MusicsforRelaxation 2 ปีที่แล้ว +1

    Уроки просто супер, многое понял для себя, но есть 1 просьба)) можешь снять 3-ю часть, добавление и блокирование области, кнопку с текстурой перехода на сцену)))) Если будет желание сделать, буду очень рад посмотреть))) Продолжай в том же духе, Мастер Гуру из тебя отличный получается, всё детально и подробно объясняешь. Благодарю за контент)))

  • @safex9697
    @safex9697 4 ปีที่แล้ว +2

    9:10 можно сильно упростить. В строку instPans[i].transform.loaclPosition = new Vector2(); указать ...Vector2(spacing*i,0); создав переменную float spacing. И тогда проверять не надо, формулы составлять не надо, размеры брать не надо. Проще говоря, так легче

  • @ПетрВерхов-ч2щ
    @ПетрВерхов-ч2щ 4 ปีที่แล้ว +3

    Спасибо за видео, в свое время оно мне сильно помогло.
    Правда по прошествии времени заметил пару моментов не совсем логичных: У вас же одинаковое расстояние между объектами, зачем искать ближайший объект методом перебора всех объектов? Mathf.Abs(Mathf.RoundToInt(contentRect.anchoredPosition.x/len)), где len - расстояние между центрами объектов. Оборачиваем в проверку если позиция больше 0 id = 0, если меньше минимального (0-(len*(a-1)), где а - число итераций цикла размещающего префабы на сцене) id = a - 1; Если объектов много постоянно их перебирать какой смысл?
    Так же немного раздражает, что выполнение бесконечное Mathf.SmoothStep, решил добавлением булевой переменной, которой задаю true если scroll = true и false если Mathf.Abs(contentRect.anchoredPosition.x - (PrefabPos[id].x + len)) < 1f, ну и выполнение выравнивания на ближайшем объекте только если эта переменная true.
    Я еще столкнулся с интересной проблемой, к которой даже не знаю как подступиться:
    Если в scrollview запихнуть много кнопок то в некоторых местах она странно глючит. Проявляется и в play mode и в билде. Выглядит как резкие смены contentRect.anchoredPosition.x с текущей позиции на 0 и обратно, причем если палец не отпускать то можно пролистать дальше и всё нормализуется, но если отпустить на глючном отрезке, мгновенно вернется по нулевому объекту. В моем случае при расстоянии между кнопками в 60f глючить начинает на 150ой кнопке. К 500ой кнопке частота глючных отрезков увеличивается примерно в 2 раза, дальше только хуже. Мышка или палец не зависит. Может есть какие-нибудь идеи из-за чего?

    • @user-eq8rf2sd2w
      @user-eq8rf2sd2w 2 ปีที่แล้ว

      Такой же глюк. Но глючить начинает с 25 панели. Нашел как исправить?

  • @Seri0usStas
    @Seri0usStas 3 ปีที่แล้ว +1

    Спасибо, сэкономил кучу времени!

  • @user-bc4me5kz7j
    @user-bc4me5kz7j 7 ปีที่แล้ว

    Как же я "АБАЖЖАЮ" этот канал

  • @mastervolodsobeck5176
    @mastervolodsobeck5176 ปีที่แล้ว

    сенк, рлнят и доступно. удачи в будущем.

  • @richardgreen9787
    @richardgreen9787 3 ปีที่แล้ว

    Отличный урок, удачи тебе!!

  • @jamespiligrim
    @jamespiligrim 4 ปีที่แล้ว

    Просто лучший, спасибо за информацию!

  • @Roc19961
    @Roc19961 7 ปีที่แล้ว

    Очень хороший урок. Прям топ.

  • @vaibhavkakkar2395
    @vaibhavkakkar2395 4 ปีที่แล้ว +1

    Content object inside View port also moves while scrolling horizontally, so the anchored position for RectTransform of the Content object is changing and not 0 as assumed in code, while the scrollPanels that are child objects have fixed value of local position even while we scroll horizontal
    Объект содержимого внутри порта просмотра также перемещается при горизонтальной прокрутке, поэтому позиция привязки для RectTransform объекта Content изменяется, а не 0, как предполагается в коде, в то время как scrollPanels, которые являются дочерними объектами, имеют фиксированное значение локальной позиции даже при горизонтальной прокрутке

  • @diegosuarez5473
    @diegosuarez5473 6 ปีที่แล้ว +9

    Можете ли вы рассказать мне, как я могу поместить разные панели?

    • @marymarin3506
      @marymarin3506 4 ปีที่แล้ว

      как

    • @MintUnreal
      @MintUnreal 3 ปีที่แล้ว +1

      Делаешь массив с панелями и потом убераешь инт с количеством панелей , и вместо него используешь размер списка и с массива бери префабы

  • @Itibsoft-chanel
    @Itibsoft-chanel 3 ปีที่แล้ว

    FixedUpdate используют не потому что он привязан в FPS, а потому что у него конкретное временное выполнение по стандарту - это 0,02, правда ему можно свое значение задать

  • @gevxachatryan3083
    @gevxachatryan3083 2 ปีที่แล้ว

    спасибо за урок🍺

  • @diegosuarez5473
    @diegosuarez5473 6 ปีที่แล้ว +3

    мне всего 2 панели выходят, и накладываются на вторую панель, я получаю остальное («все остальные, которые ставят»), кто-то знает, почему это происходит?
    Вы можете мне помочь, пожалуйста!

  • @yaroslavb.2589
    @yaroslavb.2589 5 ปีที่แล้ว +2

    Хороший туториал. Лайк. Только подскажи пожалуйста как в префаб 3:47 запихнуть разние изображения?

    • @-workout4118
      @-workout4118 4 ปีที่แล้ว

      Получилось?

    • @yaroslavb.2589
      @yaroslavb.2589 4 ปีที่แล้ว

      @@-workout4118 да

    • @marymarin3506
      @marymarin3506 4 ปีที่แล้ว

      @@yaroslavb.2589 как

    • @yaroslavb.2589
      @yaroslavb.2589 4 ปีที่แล้ว

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

    • @marymarin3506
      @marymarin3506 4 ปีที่แล้ว

      @@yaroslavb.2589 а как это реализовать кодом, помоги пожалуйста

  • @FXUNDPLXGG
    @FXUNDPLXGG 3 ปีที่แล้ว

    Юбилейный 100 коммент!!! Юху

  • @iosifk3322
    @iosifk3322 6 ปีที่แล้ว +13

    мне вот интересно, а как теперь создать уникальный контент на каждой панельке?

    • @-workout4118
      @-workout4118 4 ปีที่แล้ว

      Удалось сделать?

    • @iosifk3322
      @iosifk3322 4 ปีที่แล้ว

      Хлер да за 5$ даже скрипт скину

    • @-workout4118
      @-workout4118 4 ปีที่แล้ว

      @@iosifk3322 Не нужно,я помочь тебе хотел

    • @ИгорьФедоров-п8ъ
      @ИгорьФедоров-п8ъ 4 ปีที่แล้ว

      @@-workout4118 Помогите плиз, как сделать уникально кнопки, а то я в этом нуб

    • @marymarin3506
      @marymarin3506 4 ปีที่แล้ว

      @@ИгорьФедоров-п8ъ как

  • @letscreategame3954
    @letscreategame3954 6 ปีที่แล้ว +1

    Great tutorial. But how to add different images in the content. I am stuck. Can anyone advise.?

    • @letscreategame3954
      @letscreategame3954 6 ปีที่แล้ว +1

      I got it working..
      stackoverflow.com/questions/52297187/need-to-add-image-in-the-instantiated-object

  • @arisenadananjaya
    @arisenadananjaya 5 ปีที่แล้ว

    your tutorial works great, thanks mate.
    I want to ask about the starting point, it will always started from 0, can't it start from other than 0 ?

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  5 ปีที่แล้ว

      You can change the anchor point of your parent object

    • @arisenadananjaya
      @arisenadananjaya 5 ปีที่แล้ว

      @@ANDROIDHELPERRU i mean the index, it always star from index 0, can we make it to other than 0?
      thanks for the reply mate :)

  • @dboryn5361
    @dboryn5361 7 ปีที่แล้ว +1

    андрей, а что у вас в vs добавлено? что за значки unity возле строк кода, подсказки немного другие? что это?

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  7 ปีที่แล้ว

      Плагин ReSharper

    • @dboryn5361
      @dboryn5361 7 ปีที่แล้ว

      кряк или бета на 30 дней?
      если 1, то можно ссылку

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  7 ปีที่แล้ว +1

      Скачивал с официального сайта. Но про "бета 30 дней" не видел. Может через этих 30 дней узнаю)

  • @МихаилСуворов-к2щ
    @МихаилСуворов-к2щ 5 ปีที่แล้ว

    лайфхак: isScrolling можно сделать свойством и EventTrigger спокойно может с ним работать. И да, не завбыть сделать свойство public.

  • @FreeCoinsChannel
    @FreeCoinsChannel 7 ปีที่แล้ว +1

    Можно в цикле указывать позицию панелей таким образом. IntParse.transform.position = new Vector 2(i * (ширина панели + расстояние между панелями), IntParse.transform.position.y) без проверки, так как первый обьект будет с индексом 0 то и его позиция по x будет 0

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  7 ปีที่แล้ว

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

  • @vaibhavkakkar2395
    @vaibhavkakkar2395 4 ปีที่แล้ว +1

    Content anchored position is not 0, but changes while scrolling but the local position of panels are fixed, any reason this could be happening ?
    Позиция привязки контента не равна 0, но изменяется во время прокрутки, но локальное положение панелей фиксировано, может ли это происходить по какой-либо причине?

    • @kavoikapsho
      @kavoikapsho 3 ปีที่แล้ว

      same problem (i guess it's some kind of unity updates or smth)
      та-же проблема (мне кажется это какие-то нововведения в юнити)

  • @sandwichgames8863
    @sandwichgames8863 5 ปีที่แล้ว +1

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

    • @-workout4118
      @-workout4118 4 ปีที่แล้ว

      Получилось это сделать?

  • @matrosya1
    @matrosya1 3 ปีที่แล้ว

    Почему мне нужно писать instPans[i].transform.localPosition = new Vector2(instPans[i - 1].transform.localPosition.x - panPrefab.GetComponent().sizeDelta.x - panOffset, instPans[0].transform.localPosition.y); чтоб панельки спавнились вправо?

  • @Sumdottycoy
    @Sumdottycoy 7 ปีที่แล้ว

    I have an issue. My panel identifier number doesn't change - it always stay at 0 and I have no idea why.

    • @Sumdottycoy
      @Sumdottycoy 7 ปีที่แล้ว

      Nevermind I figured it out. Its because i forgot to negate the position when you set the insta pans :)

  • @MaksimBessudnov
    @MaksimBessudnov 3 ปีที่แล้ว

    У меня почему-то переменная Selected Pan ID принимает значения только 0 и 9 соответственно. Проверил несколько раз код, вроде все как здесь. В чем может быть причина?

    • @MaksimBessudnov
      @MaksimBessudnov 3 ปีที่แล้ว

      Ошибся в коде, все получилось в итоге, спасибо! Лайк и все такое. Вот как бы вставить в префаб ссылки на 3D модели.

  • @androideasycoding
    @androideasycoding 6 ปีที่แล้ว

    Скрол бары не отключаются при значение "Permanent"

  • @markser592
    @markser592 7 ปีที่แล้ว

    Почему панельки не появляются вообще нигенирируются?????

  • @DimitryArsenev
    @DimitryArsenev 7 ปีที่แล้ว

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

    • @konstantin5971
      @konstantin5971 7 ปีที่แล้ว

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

    • @konstantin5971
      @konstantin5971 7 ปีที่แล้ว

      на всякий случай: th-cam.com/video/QpFYZsI36iY/w-d-xo.html

    • @DimitryArsenev
      @DimitryArsenev 7 ปีที่แล้ว

      я хз что такое асинхронная загрузка но уверен гугл что нибудь знает

  • @EMERGENCIASTATE
    @EMERGENCIASTATE 6 ปีที่แล้ว

    hello how is the code for doing vertical im changing the x to Y and not working somebody plaeasE?!?

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  6 ปีที่แล้ว

      In scroll view you changed the "Horizontal" to "Vertical"?

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  6 ปีที่แล้ว

      Show me your code on pastebin

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  6 ปีที่แล้ว

      You didn't changed the "contentVector" position. It's still X.

    • @EMERGENCIASTATE
      @EMERGENCIASTATE 6 ปีที่แล้ว

      sorry this was old this is the new one from the begginning look thank you for you help

    • @EMERGENCIASTATE
      @EMERGENCIASTATE 6 ปีที่แล้ว

      pastebin.com/apjP2mbg

  • @МихаилГ-и1е
    @МихаилГ-и1е 7 ปีที่แล้ว +1

    Я 3

  • @oket4030
    @oket4030 6 ปีที่แล้ว

    Какая у тебе версия юнити

  • @ankitmehrotra6104
    @ankitmehrotra6104 3 ปีที่แล้ว

    using UnityEngine;
    public class SnapScrolling : MonoBehaviour
    {
    [Range(1,50)]
    [Header("Controllers")]
    public int panCount;
    [Range(0,500)]
    public int panOffset;
    [Header("Other Objects")]
    public GameObject panPrefab;
    private GameObject[] instPans;
    private Vector2[] pansPos;
    private RectTransform contentRect;
    private int selectedPanID;
    private bool isScrolling;
    void Start()
    {
    contentRect = GetComponent();
    instPans = new GameObject[panCount];
    pansPos = new Vector2[panCount];
    for(int i = 0; i < panCount ; i++)
    {
    instPans[i] = Instantiate(panPrefab, transform, false);
    if(i == 0) continue;
    instPans[i].transform.localPosition = new Vector2(instPans[i-1].transform.localPosition.x +
    panPrefab.GetComponent().sizeDelta.x + panOffset,
    instPans[i].transform.localPosition.y);
    pansPos[i] = -instPans[i].transform.localPosition;
    }
    }
    void FixedUpdate()
    {
    float nearestPos = float.MaxValue;
    for(int i = 0; i < panCount ; i++)
    {
    float distance = Mathf.Abs(contentRect.anchoredPosition.x - pansPos[i].x);
    if(distance < nearestPos)
    {
    nearestPos = distance;
    selectedPanID = i;
    }
    }
    }
    public void Scrolling(bool scroll)
    {
    isScrolling = scroll;
    }
    }

  • @thumbgamer6917
    @thumbgamer6917 6 ปีที่แล้ว +2

    ENGLISH PLEASE!!!!!!!

  • @cellfungames4708
    @cellfungames4708 5 ปีที่แล้ว

    can you provide me the source code link? Thanks in advance

    • @ankitmehrotra6104
      @ankitmehrotra6104 3 ปีที่แล้ว

      using UnityEngine;
      public class SnapScrolling : MonoBehaviour
      {
      [Range(1,50)]
      [Header("Controllers")]
      public int panCount;
      [Range(0,500)]
      public int panOffset;
      [Header("Other Objects")]
      public GameObject panPrefab;
      private GameObject[] instPans;
      private Vector2[] pansPos;
      private RectTransform contentRect;
      private int selectedPanID;
      private bool isScrolling;
      void Start()
      {
      contentRect = GetComponent();
      instPans = new GameObject[panCount];
      pansPos = new Vector2[panCount];
      for(int i = 0; i < panCount ; i++)
      {
      instPans[i] = Instantiate(panPrefab, transform, false);
      if(i == 0) continue;
      instPans[i].transform.localPosition = new Vector2(instPans[i-1].transform.localPosition.x +
      panPrefab.GetComponent().sizeDelta.x + panOffset,
      instPans[i].transform.localPosition.y);
      pansPos[i] = -instPans[i].transform.localPosition;
      }
      }
      void FixedUpdate()
      {
      float nearestPos = float.MaxValue;
      for(int i = 0; i < panCount ; i++)
      {
      float distance = Mathf.Abs(contentRect.anchoredPosition.x - pansPos[i].x);
      if(distance < nearestPos)
      {
      nearestPos = distance;
      selectedPanID = i;
      }
      }
      }
      public void Scrolling(bool scroll)
      {
      isScrolling = scroll;
      }
      }

  • @EMERGENCIASTATE
    @EMERGENCIASTATE 6 ปีที่แล้ว

    Hello someone can help me i want to do it vertical

    • @EMERGENCIASTATE
      @EMERGENCIASTATE 6 ปีที่แล้ว

      public class snap scrolling : MonoBehaviour {
      [Range(1,50)]
      [Header("Controllers")]
      public int panCount;
      [Range(0,500)]
      public int panOffset;
      [Header("Other Objects")]
      public GameObject panPrefab;
      private GameObject[] instPans;
      private void Start ()
      {
      instPans = new GameObject[panCount];
      for (int i = 0; i < panCount; i++){
      instPans[i] = Instantiate(panPrefab, transform, false);
      if (i == 0) continue;
      instPans[i].transform.localPosition = new Vector2(instPans[i-1].transform.localPosition.y + panPrefab.GetComponent().sizeDelta.y + panOffset,
      instPans[i].transform.localPosition.y);
      }
      }
      }

    • @EMERGENCIASTATE
      @EMERGENCIASTATE 6 ปีที่แล้ว

      public class snap scrolling : MonoBehaviour {
      [Range(1,50)]
      [Header("Controllers")]
      public int panCount;
      [Range(0,500)]
      public int panOffset;
      [Header("Other Objects")]
      public GameObject panPrefab;
      private GameObject[] instPans;
      private void Start ()
      {
      instPans = new GameObject[panCount];
      for (int i = 0; i < panCount; i++){
      instPans[i] = Instantiate(panPrefab, transform, false);
      if (i == 0) continue;
      instPans[i].transform.localPosition = new Vector2(instPans[i-1].transform.localPosition.y + panPrefab.GetComponent().sizeDelta.y + panOffset,
      instPans[i].transform.localPosition.y);
      }
      }
      }

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  6 ปีที่แล้ว

      Emm...i said you in your previous comment

  • @termos1897
    @termos1897 3 ปีที่แล้ว

    joolean

  • @Fin143
    @Fin143 7 ปีที่แล้ว

    А почему просто не написать типо при спавне new Vector2(0, i * растояние)

    • @Fin143
      @Fin143 7 ปีที่แล้ว

      Короче мой коммент чуть не понятный, просто я имел ввиду почему не сразу им указать позицию?

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  7 ปีที่แล้ว

      Мы как бы и сразу при спавне указываем позицию...

    • @konstantin5971
      @konstantin5971 7 ปีที่แล้ว

      он имеет в виду, что этот алгоритм ( Vector2(0, i * расстояние) ) будет лучше, чем ставить if для проверки i. С чем я соглашусь. Намного проще, логичней и понятнее.

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  7 ปีที่แล้ว

      Вы про проверку в методе FixedUpdate?

    • @konstantin5971
      @konstantin5971 7 ปีที่แล้ว

      Да нет, в самом начале. 9:53 - 19 и 20 строка. вот там.

  • @breakingbeta8717
    @breakingbeta8717 7 ปีที่แล้ว

    Как включить дебаг мод?

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  7 ปีที่แล้ว

      Можете посмотреть в этом видео - th-cam.com/video/jScyfZB8Yh4/w-d-xo.html
      Если не хотите смотреть его полностью, то перемотайте на 0:46.

    • @breakingbeta8717
      @breakingbeta8717 7 ปีที่แล้ว

      +ANDROIDHELPER [UNITY 5 and more] Да, и ещё сказать хотел, что ты лучший из всех по обучению c# на юнити. Другие плохо объясняют, либо вообще не объясняют, а несут ерунду.

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  7 ปีที่แล้ว

      Спасибо ;D

  • @Awsder_
    @Awsder_ 7 ปีที่แล้ว +1

    Новичкам нихера не понятно :D

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  7 ปีที่แล้ว

      Я в начале урока сказал, что урок не для новичков.

    • @Awsder_
      @Awsder_ 7 ปีที่แล้ว

      ANDROIDHELPER [UNITY 5 and more] да,я понял,как идея для видео,сделайте простой вариант. Без спауна из скриптов,такой есть. И вот будет разделение,новичкам и профи

  • @nikolaytheperson5519
    @nikolaytheperson5519 6 ปีที่แล้ว

    Ой я не ничего не понял XD

  • @mrgscreen6541
    @mrgscreen6541 4 ปีที่แล้ว

    Да почему надо говорить хидер? Все желание дальше смотреть отпадает...

    • @ANDROIDHELPERRU
      @ANDROIDHELPERRU  4 ปีที่แล้ว

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

  • @janek8009
    @janek8009 5 ปีที่แล้ว

    kurwa weź wyślij to już zrobione bo nie chce mi się tego kurwa przepisywać