逻辑很混乱啊
逻辑很混乱啊
疑问
改变当前场景状态的方法和离开场景的方法感觉有点冲突。
js里用json更舒服
看一个方法的API,打逗号
ShootBall脚本IsCross方法问题:
因为本游戏是2D游戏,而Z坐标的位置会影响两个球的距离,所以应当使用Vector2.Distance方法判断,而非Vector3。
修改如下:
public bool IsCross(Vector3 targetPos, float dis)
{
return Vector2.Distance(transform.position, targetPos) <= dis;
}
TextAsset itemText = Resources.Load<TextAsset>("Items");
要把Items.json文件放在Resources目录下,不然会报空指针。
基类:Item(物品类)
派生类:Consumable(消耗品类),Equipment(装备类),Weapon(武器类),Material(材料类)
public class Item
{
//物品(公有的的属性)
}
public class Consumable:Item
{
//消耗品的属性
}
public class Equipment:Item
{
//武器的属性
}
public class Material:Item
{
//材料的属性
}
前面ObjectPool脚本的GetObject方法中,while循环中都掉了return,导致运行就卡死。
其中有一次运行的时候控制台提示内存溢出,就找了下脚本中有循环的部分,发现是GetObject函数写错了,漏写了return。
while (i-->0) {
T t = pool[i];
pool.RemoveAt(i);
//return t; //开始的时候这句漏写了
}
另外,正确的写法并没有循环,所以把while改成了if,至少写错的情况下也不会有死循环的情况。
这里的这个bug是由于ViewBase里Show已经调用UpdateFun方法,同时又在下面又调用了UpdateFun方法导致该操作卡死在对象池里,这边补上base.Show刚好能解决调用的时序问题可以解决,但是等于多调用了一次UpdateFun方法,不如将SwitchPlayer里的show方法删除,交给ViewBase来管理
ViewBase中在Show方法中调用UpdateFun后可以将SwitchPlayer中Show方法删除,这段代码多余
这里按着视频来的话应该会有一个栈内存溢出的bug,需要删除ViewBase里的InitUpdateObjects方法并将_viewUpdates像_viewInits一样的方式在InitSubView内初始化以及调用InitViewInterface方法。
5:40修改了PropertyItem中UpdateData方法里的GetPropertyKeys,将planeId删除,这个操作导致update里的planeId参数不被调用,其实可以删掉,但是后面没有删除影响不大
这边数据上不来是因为PlayerPrefsMemory中GetString()方法没有被调用,需要在IDataMemory中配置GetString接口,并在DataMgr中做接口转接后,在PropertyItem中将对应Text赋值语句的DataMgr.Single.Get<string>(key)改为DataMgr.Single.GetString(key)
给关闭按钮定义一个public有意义吗?直接绑定click就行了吧,这里好像做了个无意义操作
jdk变量的配置
internal的更改
我用的unity2021,主角的prefab导进主城会很黑(有贴图),
应该是playerShader的某些地方存在版本适应问题吧(不怎么了解shader还不清楚具体哪里的问题),
只能暂时把主角的材质shader改为使用monsterShader来解决了
这集镜头设置方法有鬼畜抖动,百度了下,SetCam应该放在lateUpdate下面,这样就不会鬼畜了
counterModel.Count.OnValueChanged += newCount =>
{
//处理
}
跟
counterModel.Count.OnValueChanged+= OnCountChanged;
private void OnCountChanged(int newCount)
{
//处理
}
这节居然把音频监听器(耳朵)挂在gameroot上,其实还是和相机挂在一起更符合游戏的概念吧
【耳朵】挂在gameroot上,那gameroot的方位就决定了玩家玩游戏听到3D音源的方位,这……肯定是错误的