Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Внутри создадим простой дженерик метод расширения, который будет оборачивать любой инстанс в массив
//Обрабатываем клик левой кнопки мыши
if (Input.GetMouseButtonDown(0))
{
//Берем точку по которой игрок нажал и отправляем всем компонентам уведомление
var hit = GetMouseHit();
Events.PublishAsync("poittogound", new PointOnGroundEventData { Sender = this, Point = hit.point });
} protected override void OnUpdate()
{
//Передача состояния по позиции агента
if (agent.remainingDistance > agent.stoppingDistance)
{
Events.Publish("agentmoved",
new AgentMoveEventData { Sender = this, DesiredVelocity = agent.desiredVelocity });
}
else
{
Events.Publish("agentmoved",
new AgentMoveEventData { Sender = this, DesiredVelocity = Vector3.zero });
}
}protected override Task[] OnUpdateAsync()
{
//Передача состояния по позиции агента
if (agent.remainingDistance > agent.stoppingDistance)
{
return new Task[] { Events.PublishAsync("agentmoved",
new AgentMoveEventData { Sender = this, DesiredVelocity = agent.desiredVelocity }) };
}
else
{
return new Task[] { Events.PublishAsync("agentmoved",
new AgentMoveEventData { Sender = this, DesiredVelocity = Vector3.zero }) };
}
}чем больше будет слушателей, тем дольше будет выполняться его обработка. Для того чтобы уйти от этого, нужно реализовать асинхронную обработку уведомлений
Управление персонажем с помощью SharedEvents