Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
aDOPPIO

Алексей

Начинающий c# + Unity программист
  • 2
    вклад
  • 1
    вопрос
  • 5
    ответов
  • 40%
    решений
Комментарии
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Можно ли задавать условие в название GetComponent?

    aDOPPIO
    Алексей @aDOPPIO
    WOSNE, хехехе, очень рад, что смог помочь) а тебе удачи и успехов)
    Написано более года назад
  • Как узнать уровень освещения объекта?

    aDOPPIO
    Алексей @aDOPPIO
    Алексей, а добавлять солнечную панель, когда нет смены дня и ночи я не вижу смысла. Потому сразу предположил, что она там есть/будет.
    Написано более года назад
  • Как узнать уровень освещения объекта?

    aDOPPIO
    Алексей @aDOPPIO
    Юра Милевский, слушай. Ты ведь понимаешь, что если кто-то делает подобную механику, то он сделает и так, чтобы подобное фиксировалось в коде? На Unity можно сделать смену времени суток. В этом я уверен. Значит можно и рассчитать и фиксировать время суток.

    Идею я взял с игры Rimworld. Она, кстати, тоже сделана на Unity. Если я не ошибаюсь, то там солнечная панель работает примерно по такому же принципу, как я и описал. Если над панелью есть крыша, то она работать не будет. Если крыши нет, то продуктивность панели зависит от времени суток. Рано утром работает на минимум, днём на максимум, вечером опять слабее, а ночью не работает вовсе. Правда здесь нет источника света от солнца как такового. Но идеи можно осуществлять по разному.
    Написано более года назад
  • Можно ли задавать условие в название GetComponent?

    aDOPPIO
    Алексей @aDOPPIO
    Алексей, я в принципе не уверен, но, возможно, можно сделать также в обратную сторону. Написать скрипты для заклинаний, закинуть на объект Spell, а там где нужно приравнивать его к заклинанию.
    Spell activeSpell;
    
    void start()
    {
       // Fireball myFireball = new Fireball();
       // Здесь меняешь нужные данные
       // bbbb.manaCost = 8;
       // activeSpell = myFireball;
       activeSpell = new Fireball();
    }


    Но это ещё проверить нужно......
    Написано более года назад
  • Можно ли задавать условие в название GetComponent?

    aDOPPIO
    Алексей @aDOPPIO
    Class Spell : MonoBehaviour
    {
       //int manaCost;
    
       virtual void CastSpell()
       {
         // То, что ты напишешь здесь, будет так же работать в base.CastSpell()
       }
    }

    Class Character : MonoBehaviour
    {
       Spell activeSpell;
    
       void GetSpell()
       {
          activeSpell = GetComponent < Spell>(); // берет твой файрбол, но при этом видит его лишь как заклинание
       }
    
       void TryCastSpell()
       {
          activeSpell.CastSpell();
       }
    }

    Class Fireball : Spell
    {
       override CastSpell()
       {
          base.CastSpell();
          // Сюда пишешь логику именно для этого заклинания
       }
    }

    Надеюсь, что нет ошибок, писал с телефона. В принципе и в синтаксисе мог ошибиться, но надеюсь, что помог.
    Edit: на сам объект кидай именно файрбол скрипт.
    Написано более года назад
  • Можно ли задавать условие в название GetComponent?

    aDOPPIO
    Алексей @aDOPPIO
    Алексей, тут есть несколько разных решений, связанных с ООП. Я штуки три насчитал примерно.
    Написано более года назад
  • Можно ли задавать условие в название GetComponent?

    aDOPPIO
    Алексей @aDOPPIO
    Получается, ты опишешь логику самих заклинаний, но в том месте, в котором ты будешь его запускать, тебе уже необязательно знать, какое именно заклинание ты используешь.
    Написано более года назад
  • Как узнать уровень освещения объекта?

    aDOPPIO
    Алексей @aDOPPIO
    Алексей, я, конечно, лишь новичок, но есть одна идея. Могу догадаться, что если есть солнечная панель, то солнце есть не всегда, то бишь есть смена времени суток. Значит проще делать проверку, что в принципе над панелью ничего нет, а степень освещенности как-нибудь связать с временем суток.
    Написано более года назад
  • Как узнать уровень освещения объекта?

    aDOPPIO
    Алексей @aDOPPIO
    Видел, как ты ответил точно так же под другим вопросом, хотя там было очевидно, что ты не прав -_-.

    Уверен, что есть способ(ы) это решить, подписался на вопрос, а может и сам почитаю об этом что-нибудь.
    Написано более года назад
  • Как плавно програмно сдвинуть контент ScrollView?

    aDOPPIO
    Алексей @aDOPPIO
    aDOPPIO, если я правильно понимаю, то остальные исправления не нужны, вот я к чему.
    Написано более двух лет назад
  • Как плавно програмно сдвинуть контент ScrollView?

    aDOPPIO
    Алексей @aDOPPIO
    Я Вас не совсем понял насчёт бесконечно цикла, да и по идее Вы только добавили лог позиции до перемещения и заменили Time.fixedDeltaTime (кстати, я тормоз он там не нужен, просто поставьте число поменьше, например, как Вы и сделали 1/3). Если я ошибся, поправьте, пожалуйста.
    Написано более двух лет назад
  • Как плавно програмно сдвинуть контент ScrollView?

    aDOPPIO
    Алексей @aDOPPIO
    aDOPPIO, Вообще, я только что пересматривал свой код. У меня Lerp стоит в FixedUpdate() и вместо time(произвольной переменной) стоит Time.fixedDeltaTime. Вы можете как третий параметр в Lerp написать time * Time.fixedDeltaTime
    Написано более двух лет назад
  • NullReferenceException: Object reference not set to an instance of an object выходит, когда хочу запустить награждающее видео. Что делать?

    aDOPPIO
    Алексей @aDOPPIO
    Для версий плагина 3.16.0 или выше нужно писать код по другой инструкции.
    Написано более двух лет назад
  • Как плавно програмно сдвинуть контент ScrollView?

    aDOPPIO
    Алексей @aDOPPIO
    Пычев Анатолий, хорошо! Жду ответа.
    Написано более двух лет назад
  • Как плавно програмно сдвинуть контент ScrollView?

    aDOPPIO
    Алексей @aDOPPIO
    aDOPPIO, Естественно я написал так, как сделал бы я. А я, ещё раз повторю, новичок. И мне всего лишь 16 лет, детский мозг ещё :)
    Написано более двух лет назад
  • Как плавно програмно сдвинуть контент ScrollView?

    aDOPPIO
    Алексей @aDOPPIO
    Добавьте float переменную и изменяйте её в ScrollToTop и ScrollToBottom, а в Update() производите Lerp. Вроде так можно, но всё таки могу ошибаться, я новичок. И, кстати, в целях оптимизации кода не используйте GetComponent() в подобных функциях, которые выполняются очень часто. Здесь, к примеру, я добавил переменную scrollRect и взял компонент в старте. Переменная time влияет на скорость перемотки в данном случае.
    private float vertPos;
    private float time = 1f;
    ScrollRect scrollRect;
    
    private void Start(){
       scrollRect = Scrollview.GetComponent<ScrollRect>();
       vertPos = 1f;
    }
    private void Update(){
       Mathf.Lerp(scrollRect.verticalNormalizedPosition, vertPos, time)
    }
    public void NavButtonDown_Click(){
            StartCoroutine(ScrollToTop ());
        }
        public void NavButtonUp_Click(){
            StartCoroutine(ScrollToBottom());
        }
        IEnumerator ScrollToTop ( )
        {
            yield return new WaitForEndOfFrame ( ) ;
            vertPos = 1f ;      
        }
        IEnumerator ScrollToBottom ( )
        {
            yield return new WaitForEndOfFrame ( ) ;
            vertPos = 0f ;      
        }
    Написано более двух лет назад
Самые активные сегодня
  • Evgenii
    • 10 ответов
    • 0 вопросов
  • Enokin
    Владислав
    • 8 ответов
    • 0 вопросов
  • Drno
    • 7 ответов
    • 0 вопросов
  • mayton2019
    • 6 ответов
    • 0 вопросов
  • sharp97
    sharp97
    • 4 ответа
    • 1 вопрос
  • OpenAI
    OpenAI
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации