我尝试在whatever.rs
内设置脚本全局:
uint32_t a = 2;
void set_a_from_float(float x) {
// more processing in real life
a = (uint32_t) x;
}
ScriptC_whatever w = new ScriptC_whatever(mRS);
w.invoke_set_a_from_float(3.0f);
Log.d("ContrivedExample:", ""+w.get_a()); // logs 2
这是一个愚蠢的例子,我知道我可以使用自动生成的getter / setter,但这个错误似乎仍然是违反直觉的。
为什么这不起作用?
答案 0 :(得分:3)
反射的.java文件将缓存脚本中设置的初始值。如果从.set()更新值,则将更新缓存的值。 .get()返回缓存的值。
出于性能原因,我们不会在从脚本编写时更新缓存值。要将值发送回.java文件,您可以从rs_allocation读回或从脚本中使用rsSendToClient *()。