关与大英雄5级自充加满破虚数
命运冠位指定吧
全部回复
仅看楼主
level 10
ᶜᵘˢʸⁿ 楼主
[滑稽]一个关于99np进位到100np的机制。
2019年02月25日 01点02分 1
level 10
ᶜᵘˢʸⁿ 楼主
关于 99% NP 进位到 100% 的说明
战斗时对于从者的 NP 的变动(例如攻击时每hit增加NP、使用技能减少NP),
都会调用到 addNp(int npAdd) 这个函数,
而这个函数内有个特殊判断(C#代码):
if (0 < npAdd && (float)this.lineMaxNp * 0.99f <= (float)this.np && this.np < this.lineMaxNp) { this.np = this.lineMaxNp; }
从代码本意上看,盐川想要的效果是:
如果 np 增加后,其值处于 [9900,9999](即99%NP范围内),则自动向上进位至 10000(100%)。但是中间这句判断是有问题的:
(float)this.lineMaxNp * 0.99f <= (float)this.np
C# 运算时,float 会自动转为 double 进行对比,左侧数字由于浮点数精度问题,会变为 9900.00009536743,如果右侧是 9900.0 ,则会对比失败,这就会导致 99% NP 的状态。
修复问题的办法是把 C# 代码改为整形判断:
this.lineMaxNp * 99 / 100 <= this.np
对于 Unity 程序,Android 是用 mono 虚拟机跑的 C# dll,而 iOS 则是用 il2cpp 编译为原生的 C++ 代码。编译后 C++ 代码反而是
正确的
:
(!(((float)((float)((float)(((float)((float)lineMaxNp)))*(float)(0.99f)))) <= ((float)(((float)((float)np))))))
所以,实现的结果是:只有iOS在NP增加为99%时进位100%,安卓在正好为99.00%时不会进位,仍显示99%。
日服1.40.0(2018.6.13)将float类型全部改为double,修复了这一问题,iOS和Android表现一致,NP增加时都会从99%进位100%。
if (0 < npAdd && (double)this.lineMaxNp * 0.99 <= (double)this.np && this.np < this.lineMaxNp) {
this.np = this.lineMaxNp;
}
2019年02月25日 01点02分 3
level 10
ᶜᵘˢʸⁿ 楼主
关于 NP 显示的问题
在显示时,NP 处理逻辑如下(C#)
public static int npGauge(int now) {
int lineCount = 3;
int max = 3 * 10000;
return (int)Math.Floor((float)now / (float)max * 100f * (float)lineCount);
}
这段代码在 C# 下运行是没有问题的,即在 Android 平台上,NP显示是正确的。
但是,当编译为 iOS 项目时,Unity 会把 C# 转换为 C++ 代码:
int npGauge(int now) { float npGauge = now / 30000.f;
npGauge *= 100.0f;
npGauge *= 3; return (int)floor(npGauge);
}
这就会存在精度丢失的问题,导致某些数值会出现错误,例如 10700 会返回 106.999992。
即在 iOS 上会出现如下显示错误:
实际值 显示值
29% 28%
49% 48%
58% 57%
98% 97%
107% 106%
116% 115%
125% 124%
159% 158%
177% 176%
193% 192%
196% 195%
211% 210%
214% 213%
229% 228%
232% 231%
250% 249%
253% 252%
修复办法是全程改用 long 计算,先乘,后除,避免丢失精度。
2019年02月25日 01点02分 4
level 10
ᶜᵘˢʸⁿ 楼主
[滑稽]然后我们实际测试一下
2019年02月25日 01点02分 5
level 12
[滑稽]
2019年02月25日 01点02分 6
level 12
以前一直用的是5级,好用得很,这次赝作为了全加成迫不得已升了10[泪]
2019年02月25日 01点02分 7
level 13
还有爱酱8级自充+满破虚数国日服结果也不同
2019年02月25日 01点02分 8
[滑稽]ios和安卓也不一样,然而部分云玩家一口咬定不能到100.
2019年02月25日 01点02分
[滑稽]一般情况下都能直接上100的,日服b服渠道服我都有号
2019年02月25日 01点02分
[滑稽]可能你游ios端的人都不玩贴吧
2019年02月25日 02点02分
level 10
太长 不看[滑稽][茶杯]
2019年02月25日 01点02分 10
[滑稽]拉到下面看结果就好了
2019年02月25日 01点02分
level 12
6[滑稽]
2019年02月25日 01点02分 11
level 12
还是拉满吧,我本来点到6,发现活动还是10稳定[滑稽]
2019年02月25日 01点02分 12
level 14
大佬666,好像我又学到了一些没啥软用的知识[滑稽]
2019年02月25日 01点02分 13
level 14
看不懂,喊666就对了是吧[滑稽]
2019年02月25日 01点02分 14
level 11
[滑稽]🐮🍺
2019年02月25日 01点02分 15
level 10
ᶜᵘˢʸⁿ 楼主
[滑稽][心碎]楼主过于手机辣.鸡截不到大英雄释放技能瞬间的图
这里有个大佬做好的视频你们自己看吧。
https://tieba.baidu.com/p/6036978262?fid=18559089&pid=124115269280&red_tag=2652608432#124115269280
2019年02月25日 01点02分 16
level 10
ᶜᵘˢʸⁿ 楼主
2019年02月25日 01点02分 18
1 2 尾页