自己做mod的时候在商店节目卡死,看了半天游戏源码才找到问题所在,打算把原因发出来看看能不能帮到同样原因遇到这个问题的人
尖塔mod在卡太少的情况下从卡尺随机出卡会发生空指针错误(每种类型卡至少三张,稀有度无所谓,getCardFromPool方法只看类型,稀有度随机的),所以我做了很多占位符卡,来让mod在结算的时候不会崩溃,方便我测试卡片
但是因为我直接复制的一张卡的代码,只改了ID,makeCopy方法在调用的时候返回的是我复制的那张卡的实例,战斗结算的地方代码我没有看,但是似乎是直接生成的卡片,而商店的卡是调用makeCopy方法生成的,然后因为不知名原因出现同样的卡片商店页面生成的时候就会卡死,解决方法就是把makeCopy方法改成返回占位符卡自己的这个类
源码我没有仔细研究,是半猜半看找出问题的,有兴趣的可以自己看看源码找到原因
生成商店是在shopRoom类里,onPlayerEntry方法会在玩家进入商店的时候触发,切换完BGM之后会到
setMerchant(new Merchant());
这个语句是生成商人,商人类的构造函数会生成要卖的卡,可以看到他是先通过getCardFromPool抽出来卡,然后对这个卡调用makeCopy方法,所以会出现刚刚说的问题