我正在开发一个游戏并使用 Vector2List 来表示许多粒子的位置。假设我想将 X 值增加 4。
当我使用单个 Vector2 时,我可以做这样的事情,一切都很好:
position.x += 4;
其中 position 是 Vector2 的一个实例
如果 Vector2 是 {3, 5} 那么它变成 {7, 5}(一切正常)。
但是,如果我使用的是矢量列表,我会执行以下操作:
position[i].x += 4
其中 i 是粒子索引,位置是 Vector2List 的一个实例
然后它从 {3, 5} 变为 {3, 5}(完全没有变化!)。
我发现完成这项工作的唯一方法是使用函数集值,但它看起来不应该是强制性的。难道我做错了什么?
什么不工作
position[i].x += 4;
什么在起作用
position.setValues(i, position[i].x+4, position[i].y);
示例代码
Vector2List positions = Vector2List(1);
print('positions[0] = ${positions[0]}');
positions[0].x += 4;
positions[0].y += 10;
print('positions[0] after operation = ${positions[0]}');
positions.setValues(0, positions[0].x + 4, positions[0].y + 10);
print('positions[0] after setValues = ${positions[0]}');
结果是
I/flutter (32638): positions[0] = [0.0,0.0]
I/flutter (32638): positions[0] after operation = [0.0,0.0]
I/flutter (32638): positions[0] after setValues = [4.0,10.0]
我的软件
Flutter 版本 Channel Stable 2.0.1
Dart SDK 版本:2.12.0 (stable)
我正在使用空安全。
请原谅任何英语错误,我不是母语人士。
谢谢!