79. 2023-09-24周总结

  1. 继续代码重构
  2. 客户端触发器

1. 继续代码重构

这周实体结构基本搭建好,建筑,障碍都已经按照实体的框架重写,因为时间太久,需求嵌入太多,目前还有很多地方没改全。剩余小人、大地块留给其他同事继续实体化。

另外这周把点击事件重写了下,之前所有点击事件写在一个Update里面,加上我们的需求复杂,需要支持点击,拖拽,长按,边缘检测等等,代码臃肿的根本没法看。

我引入了EventTrigger组件,利用他来解耦代码,每个实体只关心自己的输入事件即可,因为涉及到整个地图拖拽功能,在最底层还加入一个EventTrigger,用来处理点实体以外的输入事件。

另外实体不能拖拽的时候还应该利用下面代码把输入事件传递到最底层实现拖拽功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
protected void TriggerToHandler<T>(PointerEventData eventData, EventFunction<T> function) where T : IEventSystemHandler
{
// 传递给最底层进行事件处理
List<RaycastResult> results = new List<RaycastResult>();
EventSystem.current.RaycastAll(eventData, results);
for (int i = 0; i < results.Count; i++)
{
if (results[i].gameObject.name == "@TriggerEventHandler") // TODO:暂时用名字代替,后面可以用Layer
{
ExecuteEvents.Execute(results[i].gameObject, eventData, function);
}
}
}

2. 客户端触发器

总结经验之后,觉得客户端还是得有个统一触发器来做一些流程衔接,比如在接到a任务并且回到主界面之后触发某个对白,对白播放完成之后开始某个新手引导等等。

触发器需求:

  1. 需要支持一个或多个触发条件
  2. 需要支持只触发一次或者重复触发

其他

这周开展了团建,跟同事玩了狼人杀,实在不擅长这个。拿到好人和拿到狼人的状态完全不一样,好人可以随便扯,拿到狼人的时候说话都会紧张,一眼就能看出我是狼人,偏偏3局还拿了两次狼(哭笑)。