更新了重要的新信息(见底部)
编辑了更好的日志代码
我正在追踪我们的应用程序中的一些图形损坏,并将其追溯到这个函数(我已经在其中大量记录了日志):
public final int p_PostDraw(){
bb_std_lang.print("Dissolve encountered.");
float t_d=c_GColour.m_dissolve;
bb_std_lang.print("Cached dissolve value locally: "+c_GColour.m_dissolve+ " " + t_d);
c_GColour.m_dissolve=c_Gel.m_colstack.p_Top().m_a;
bb_std_lang.print("Updated dissolve value: " + c_GColour.m_dissolve);
c_Gel.m_colstack.p_Top().m_a=1.0f;
bb_std_lang.print("Monitoring t_d="+t_d);
super.p_PostDraw();
bb_std_lang.print("Monitoring t_d="+t_d);
c_GColour.m_dissolve=t_d;
bb_std_lang.print("Dissolve post restore " + c_GColour.m_dissolve);
return 0;
}
大多数情况下,这会按预期工作,但在游戏中的某个时刻,会记录以下内容:
09-30 14:40:59.086 10545-11101/? I/[Monkey]: Dissolve encountered.
09-30 14:40:59.086 10545-11101/? I/[Monkey]: Cached dissolve value locally: 1.0 1.0
09-30 14:40:59.086 10545-11101/? I/[Monkey]: Updated dissolve value: 0.1
09-30 14:40:59.086 10545-11101/? I/[Monkey]: Monitoring t_d=1.0
09-30 14:40:59.087 10545-11101/? I/[Monkey]: Monitoring t_d=-1.6314132E-19
09-30 14:40:59.087 10545-11101/? I/[Monkey]: Dissolve post restore -1.6314132E-19
为您分解一下:静态值m_dissolve被复制到局部变量t_d中,并且值为 1.0f。然后将静态值修改为 0.1f 并用于子对象的渲染。完成后,局部变量t_d在用于恢复静态值之前再次被记录,但同时神秘地变成 -1.6314132E-19 (这个值每次似乎都不可预测地不同)。
我不知道本地 Java 变量会以这种方式被破坏。
慕森卡
MMMHUHU
哈士奇WWW
相关分类