关于BehaviorTree传递变量的问题
因为涉及到旅客与队列的交互,有时候会遇到多名旅客同时给队列线传递自身gameobject的情况,这时候会提示Index溢出;解决的方法有两种:
(1)旅客触发函数的优化,之前采用旅客距离判断是否小于某个阈值来判别旅客是否到达某个点,之后传递给队列线,这种思路并不好,因为多名旅客会同时到达;同时给队列线传递消息,如果这个消息采用同一个全局变量,就会导致系统会随机选择一个进行存入,其他的存入list时,Index就为负数,解决的方法为给每个旅客进行distance计算,挑选最小的distance认为旅客到达;但是这种实现起来较为麻烦,因此采用第二种方法;
(2)补全list:当旅客的list.Index(自身)为负数时,
if(myPassengerList.IndexOf(gameObject)<0)
{ Debug.Log(myPassengerList.IndexOf(gameObject));
myPassengerList.Add(gameObject);
a.Value=myPassengerList;
GlobalVariables.Instance.SetVariable("PassengerList", a);//统计乘客。记入队列乘客列表
}
如此,采用(2)能给队列线补齐,不过后续功能可能存在BUG,所以还需排除其他BUG。