解决切枪bug不够完善,
假定枪械数量>3。
0,1,2,3
拾取0,2后鼠标滑轮依旧无法完成切枪。
目前知识滴优化思路:
1.自动切枪逻辑不变
2.将武器ID列表按照从小到大的顺序排序,并转化为一个数组。手动切枪时根据curIndex和%运算符实现循环切枪。
public void ChangeCurWeapon(bool autoChange = false)
{
//todo 拾取武器的id不连续时无法切枪bug √
if (autoChange)
{
//第一次拾取时,切换最新拾取武器
ChangeWeapon(weaponDict.Keys.Last());
}
else
{
var weaponIDs = weaponDict.Keys.OrderBy(id => id).ToArray();//将key小大排序形成数组
var curIndex = Array.IndexOf(weaponIDs, curWeaponID);
if (Input.GetAxis("Mouse ScrollWheel") > 0)//向上滑
{
curIndex = (curIndex + 1) % weaponIDs.Length;
ChangeWeapon(weaponIDs[curIndex]);
}
else if (Input.GetAxis("Mouse ScrollWheel") < 0)//向下滑
{
curIndex = (curIndex + weaponIDs.Length - 1) % weaponIDs.Length;
ChangeWeapon(weaponIDs[curIndex]);
}
}
}