算错了 -35
算错了 -35
据我分析,此方法是用碰撞体的线替代了射线的点
先图层再排序
解决切枪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]);
}
}
}
计算当前不精确度,确定射击夹角(不精确度越大,射击夹角越大,越不准)。
公式为:当前不精确度 = 最小不精确度 + 当前不稳定性。
注:
站立切走动时(不稳定性变大时),瞬间赋值;
走动切站立时(不稳定性变小时),慢慢递减赋值直到相等。
为什么我用这个工具,然后跟老师的提示词一样,但是生成的时候有问题,总感觉多了csharp文字,复制过英文的就可以直接生成代码
父类有带参数的构造方法,子类也必须提供带参数的构造方法
Ctrl+F可以方便得替换
实现继承的抽象类中的函数记得要用override
18
抽象类的抽象方法前也要用abstract声明
单例模式的一般实现
1.类实例化
2.构造方法私有化
3.公有方法访问
挂载在游戏物体身上就要继承自MonoBehaviour
各种类互相调用就是耦合性高
->调用
a->b->c->d
a是最高层的模块
d是最低层的模块
if (mButtonClicked && mButtonState == ButtonState.None) { mButtonState = ButtonState.Clicked; }
这个在UniRx里的位置写错了吧?
Ctrl+C+V
表现层复用的逻辑可以用在系统层,比如计时系统和成就系统
模型层则负责数据的定义以及提供数据的修改方法
工具层则负责提供基础设施,比如存储方法,网络链接方法,框架集成等等
当上层要改变下层状态时必须要用command,只是简单查询则可以直接方法调用
由于IController没有对应的抽象Controller,所以IBelongToArchitecture的阉割需要在子类中实现
其实可以为项目制作指定的抽象类,但是为了框架的通用性,所以新项目需要自己去对应的类里进行GetArchitecter的阉割