Как создать диалоговую систему в Unity за 5 минут

Поделиться
HTML-код
  • Опубликовано: 26 дек 2024

Комментарии • 37

  • @ВадимБашкатов-о5е
    @ВадимБашкатов-о5е 2 года назад +5

    Всего 12 часов и Ютуб уже рекомендует такой классный ролик. Спасибо за полезный материал. Всё было понятно и интересно разъяснено. Успехов!

  • @Driven-Wind
    @Driven-Wind 9 месяцев назад +1

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

  • @KirillGopienko
    @KirillGopienko  2 года назад +13

    Всем спасибо за просмотр = )

  • @ЧоЧочочо-р7м
    @ЧоЧочочо-р7м Год назад +3

    Блин а как сделать систему диалогов НПС с НПС и чтобы во время этого процесса они просто стояли???

    • @hungryghost6344
      @hungryghost6344 9 месяцев назад

      активацию скрипта по тригеру

  • @KeyDevLol
    @KeyDevLol 2 года назад +7

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

    • @KeyDevLol
      @KeyDevLol 2 года назад +1

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

  • @NewUser78654
    @NewUser78654 4 месяца назад +2

    Не переменная, а поле. Не функция, а метод. Все имена методов с большой буквы (MSDN, у нас тут на PHP).
    Соблюдать инкапсуляцию - не делать поля открытыми.
    Использовать сериализуемые поля, использовать геттеры и сеттеры для доступа из других классов.
    Наличие в коде двух методов запуска одной корутины (не произносить коруНтина), работающей с одним текстом, без передачи ссылки на корутину в поле и возможности её остановки, в перспективе грозит запуском 2х экземпляров корутины одновременно (нет контроля запуска корутины или флага окончания её работы).
    Остановить все корутины = остановить ВСЕ корутины в данном скрипте (solid? ). Будет +1 новая корутина, будут проблемы.

  • @Седьмойномер-р1щ
    @Седьмойномер-р1щ 5 месяцев назад

    Не могу закинуть свой текст в скрипт, в чём проблема подскажите пожалуйста

    • @G3nKai1488
      @G3nKai1488 5 месяцев назад

      Не тестил код, но скорее всего дело в том, что текст это массив предложений. И тебе надо будет разбить весь свой текст на отдельные элементы массива и запихать вовнутрь ИНСПЕКТОРА (правое окно юнити), когда тыкнешь на объект, в который ты кинул скрипт

    • @-Mesh66
      @-Mesh66 4 месяца назад +1

      была таже проблема используй
      текст легаси

  • @Aksi_channel
    @Aksi_channel 2 года назад +2

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

    • @KirillGopienko
      @KirillGopienko  2 года назад +3

      Да, всё верно подмечено, в конце видео я немного обрезал этот момент, но там я создал кнопку на весь экран, и дал ей название ScipText, к кнопке была привязана функция scipTextClick(), она проверяла все ли буквы выставлены, если да то запускалась функция NextLine(), если нет, то запускалась StopAllCoroutines(), и заменялся текст по текущему индексу dialogueText.text = lines[index].

  • @segun190
    @segun190 2 года назад +13

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

    • @drag_bruh5739
      @drag_bruh5739 8 месяцев назад

      ну расскажи что такая диалоговая система?

    • @skovorodkaash
      @skovorodkaash 7 месяцев назад +1

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

  • @cripto_ulitka
    @cripto_ulitka 2 года назад +2

    Спасибо за видео))

  • @dmitry2033
    @dmitry2033 8 месяцев назад +1

    Спасибо

  • @dendy4943
    @dendy4943 Год назад +3

    А я свою систему писал часа 3-4…

  • @cristalGamer5100
    @cristalGamer5100 Год назад +1

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

    • @user-vg7id3qe2j
      @user-vg7id3qe2j Год назад

      какая же жиза

    • @erenjeger3049
      @erenjeger3049 9 месяцев назад

      Я думаю, что вы уже давно решили свою проблему, но похожие вопросы, например с анимациями, я решал через машину состояний (enum). Сейчас планирую пробовать создать свою новеллу, мне кажется это как раз то, что нужно.

    • @cristalGamer5100
      @cristalGamer5100 9 месяцев назад

      @@erenjeger3049 оо я использовал программу inky пришлось запарится чтобы разобраться но желаемого я добился

    • @cristalGamer5100
      @cristalGamer5100 9 месяцев назад

      Да я добился того чего хотел используя inky ​@@erenjeger3049

  • @neymon
    @neymon Год назад +1

    спасибо большое

  • @feilov3638
    @feilov3638 2 года назад +3

    Комментарии для продвижения видео

  • @stalen9137
    @stalen9137 2 года назад

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

  • @ярославРевицкий
    @ярославРевицкий 27 дней назад

    помогло. Но работает через раз:(

  • @maksimsazanovich6087
    @maksimsazanovich6087 Год назад

    Tmp_Text >

  • @andreysuperultrakibergspor4581
    @andreysuperultrakibergspor4581 Год назад +1

    скинь скрипт пж

  • @bbbbbbbbbbbbbcccc
    @bbbbbbbbbbbbbcccc 2 года назад

    слишком напоминает код другого блогера

  • @bibyter6451
    @bibyter6451 4 месяца назад

    Уж извините. Все это костыли на коленках)

    • @bibyter6451
      @bibyter6451 4 месяца назад

      Для чего-то простого норм

  • @kelafac6261
    @kelafac6261 7 месяцев назад +1

    Ужасный код за 5 минут, без обид

  • @kirixoto
    @kirixoto 24 дня назад

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class dialog3 : MonoBehaviour {
    public string[] lines;
    public float speedText;
    public Text dialogueText;
    public int index;
    void Start(){
    dialogueText.text = string.Empty;
    StartDialogue();
    }
    void StartDialogue(){
    index = 0;
    StartCoroutine(TypeLine());
    }
    IEnumerator TypeLine(){
    foreach(char c in lines[index].ToCharArray()){
    dialogueText.text += c;
    yield return new WaitForSeconds(speedText);
    }
    }
    public void scipTextClick(){
    if(dialogueText.text == lines[index]){
    NextLines();
    }
    else{
    StopAllCorountines();
    dialogueText.text = lines[index];
    }
    }
    void NextLines(){
    if(index < lines.Length - 1){
    index ++;
    dialogueText.text = string.Empty;
    StartCoroutine(TypeLine());
    }
    else{
    gameObject.SetActive(false);
    }
    }
    }