Страница 1 из 1

Давайте поставим точку

СообщениеДобавлено: 12 ноя 2017, 15:32
michaelmihe
Привет всем. Много гуглил и везде разная инфа по поводу того, что лучше OnMouse или пускать луч.
Допустим у меня в сцене сотня кликабельных объектов, что тогда будет лучше использовать?

И второй вопрос, рэй каст пустил, обьект получил по if и тегу, поменял цвет на зеленый, вышел с коллизии, через else цвет стал белым. НО. Блин у меня 20 вариантов тегов, тоеcть мне в if и else придется прописывать каждый вариант? Этож смертоубийство производительности, или я ошибаюсь?

Re: Давайте поставим точку

СообщениеДобавлено: 12 ноя 2017, 15:38
1max1
Вряд ли if`ы такие требовательные))
Может попробовать sendmessage? накинуть скрипт с методом на каждый объект, который должен менять цвет и просто отсылать ему меседж.

Re: Давайте поставим точку

СообщениеДобавлено: 12 ноя 2017, 15:59
Cr0c
1max1 писал(а):Вряд ли if`ы такие требовательные))
<...>
и просто отсылать ему меседж.

Это в разы требовательнее ифов
IPointerExitHandler-IPointerEnterHandler-IPointerClickHandler-IPointerUpHandler-IPointerDownHandler есть

Re: Давайте поставим точку

СообщениеДобавлено: 12 ноя 2017, 16:49
michaelmihe
Cr0c писал(а):Это в разы требовательнее ифов


Тоесть как я понял, по производительности OnMouse < If < Поинтер

Еще тут писали что Рэйкаст в апдейте может тупить и не срабатывать, есть смысл его в другие апдейты кидать?

Cr0c писал(а):IPointerExitHandler-IPointerEnterHandler-IPointerClickHandler-IPointerUpHandler-IPointerDownHandler есть


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

Re: Давайте поставим точку

СообщениеДобавлено: 12 ноя 2017, 16:55
michaelmihe
Изображение

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

Re: Давайте поставим точку

СообщениеДобавлено: 12 ноя 2017, 17:09
Cr0c
michaelmihe писал(а):Ненашел примеров реализации для самой игры или документации, только для интерфейсов примеры есть и то что-то нагруженное получается

Синтаксис:
Используется csharp
using System;
using UnityEngine;
using UnityEngine.EventSystems;

public class TestOver : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("Mouse enter");
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("Mouse exit");
    }
}
 

Вот пример, делать отдельным скриптом, поле с ID описания и кидать на все объекты с описанием.

Re: Давайте поставим точку

СообщениеДобавлено: 12 ноя 2017, 20:05
samana
michaelmihe писал(а):что лучше OnMouse или пускать луч.

Где-то встречалась информация, что OnMouse это тот же луч, просто внутренний.

Re: Давайте поставим точку

СообщениеДобавлено: 12 ноя 2017, 20:49
Valentinus
michaelmihe писал(а):Изображение

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


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

Re: Давайте поставим точку

СообщениеДобавлено: 14 ноя 2017, 23:34
michaelmihe
Cr0c писал(а):Вот пример, делать отдельным скриптом, поле с ID описания и кидать на все объекты с описанием.


Извиняюсь, а есть какое-то научное пояснение почему это будет быстрее онмаус и простого луча?

Re: Давайте поставим точку

СообщениеДобавлено: 15 ноя 2017, 00:20
Paul Siberdt
var question = "Пишете под десктопы?";
var pcDev = "Не парьтесь, делайте, как удобнее";
var mobileDev = "У меня и под мобилы покадрово долбили трейсы с ифами, это далеко не узкое горлышко в разработке";

return question ? pcDev : mobileDev;

Re: Давайте поставим точку

СообщениеДобавлено: 22 ноя 2017, 17:29
borr
На мобильных устройствах OnMouse работает как-то так. См последнее сообщение :)
http://unity3d.ru/distribution/viewtopic.php?f=20&t=19049