0

我试图从内部设置一个全局脚本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,但这个错误似乎仍然违反直觉。

为什么这行不通?

4

1 回答 1

3

反射的 .java 文件将缓存脚本中设置的初始值。如果值是从 .set() 更新的,则缓存的值将被更新。.get() 返回缓存的值。

出于性能原因,我们在从脚本写入时不会更新缓存值。要将值发送回 .java 文件,您可以从 rs_allocation 回读或使用脚本中的 rsSendToClient*()。

于 2013-11-06T01:54:59.300 回答