Size: a a a

Unity Floodилка

2020 October 18

SK

Sevapp Keller in Unity Floodилка
neFormal
отписываться надо
Действительно. Надо получше изучить live cycle объектов в юнити...
источник

A

Alexander in Unity Floodилка
Эт, немного оффтопа. Есть тут кто подписан на паблики в телеге с мемами или фоточками тёлочек? Если есть, то напишите мне в ЛС ссылки на них, если не сложно)
источник

S

Sdevy in Unity Floodилка
Sevapp Keller
Всем доброй ночи. Вопрос скорее по C#, чем по юнити, тем не менее.
Допустим, что у меня есть некий GameObject с компонентом StateSwitcher, в котором реализован делегат OnStateSwitch.
В компоненте какого-то другого объекта я получаю ссылку на компонент StateSwitcher и добавляю свой локальный метод OnSwitchState:
stateSwitcher = Main.GetComponent<StateSwitcher>();
stateSwitcher.SwitchCallbacks += OnSwitchState;

Ну и собственно в компоненте StateSwitcher при изменении некого состояния я дергаю этот SwitchCallbacks(state) передавая некий state. И все бы хорошо, да только:
NullReferenceException: Object reference not set to an instance of an object

Я не силен в C# и не очень понимаю, почему я не могу в делегат одного класса добавить метод из другого класса. Как лучше реализовать некий переключатель состояний в таком случае, чтобы из любого компонента можно было подписаться на событие изменения состояния игры? Заранее благодарю.
Реализуй систему событий в виде синглтона, а не компонента, и никаких проблем.
источник

SK

Sevapp Keller in Unity Floodилка
Sdevy
Реализуй систему событий в виде синглтона, а не компонента, и никаких проблем.
Не очень понял. Синглтон же паттерн, он так же может быть компонентом, не?
источник

n

neFormal in Unity Floodилка
пиздец, уже не сами школьниц постят, а просят запостить
источник

A

Alexander in Unity Floodилка
neFormal
пиздец, уже не сами школьниц постят, а просят запостить
Не понял
источник

S

Sdevy in Unity Floodилка
Sevapp Keller
Не очень понял. Синглтон же паттерн, он так же может быть компонентом, не?
Ну так-то да, просто не понятно как реализован StateSwitcher и на каком объекте он висит.
источник

SK

Sevapp Keller in Unity Floodилка
Sdevy
Ну так-то да, просто не понятно как реализован StateSwitcher и на каком объекте он висит.
а, он висит на некоем Bootstrap, где еще куча всяких системных компонентов
источник

SK

Sevapp Keller in Unity Floodилка
я честно не знаю насколько это хорошее решение, но в архитектуре игр пока не бум бум и посчитал это сносным вариантом
источник

A

Alexander in Unity Floodилка
Sevapp Keller
Не очень понял. Синглтон же паттерн, он так же может быть компонентом, не?
Паттерн не может быть компонентом, т.к. паттерн - это описание/шаблон решения проблемы, а не реализация решения)
источник

SK

Sevapp Keller in Unity Floodилка
Alexander
Паттерн не может быть компонентом, т.к. паттерн - это описание/шаблон решения проблемы, а не реализация решения)
вот и я о том же. Типа нельзя выбирать между синглтоном и компонентом
источник

A

Alexander in Unity Floodилка
источник

SK

Sevapp Keller in Unity Floodилка
А, окей, оговорюсь - с помощью синглтона можно реализовать компонент.
источник

SK

Sevapp Keller in Unity Floodилка
я не очень корректно выразился
источник

A

Alexander in Unity Floodилка
Sevapp Keller
А, окей, оговорюсь - с помощью синглтона можно реализовать компонент.
источник

A

Alexander in Unity Floodилка
Я только что немного ахренел
Сейчас 2 часа ночи
источник

A

Alexander in Unity Floodилка
Воу
источник

S

Sdevy in Unity Floodилка
Sevapp Keller
вот и я о том же. Типа нельзя выбирать между синглтоном и компонентом
Речь о том, что система событий будет доступна везде без всяких геткомпонент, и подписываться, и отписываться и диспачить события с одного обьекта
источник

SK

Sevapp Keller in Unity Floodилка
Sdevy
Речь о том, что система событий будет доступна везде без всяких геткомпонент, и подписываться, и отписываться и диспачить события с одного обьекта
А, ну окей:
public class StateSwitcher : MonoBehaviour
{
   public delegate void SwitchStateCallback(string state);
   public static event SwitchStateCallback SwitchCallbacks;
...}

Будет доступно везде
источник

SK

Sevapp Keller in Unity Floodилка
я понимаю, что state строкой это немного стремно, но опустим этот момент
источник