gpt4 book ai didi

c# - 无法修改 XNA Vector 组件

转载 作者:太空狗 更新时间:2023-10-29 18:14:25 24 4
gpt4 key购买 nike

我有一个名为 Sprite 的类,ballSprite 是该类的一个实例。 Sprite 有一个名为 Position 的 Vector2 属性。

我正在尝试像这样增加 Vector 的 X 分量:

ballSprite.Position.X++;

但它会导致这个错误:

Cannot modify the return value of 'WindowsGame1.Sprite.Position' because it is not a variable

这样设置组件不可以吗? X 和 Y 字段的工具提示显示“获取或设置...”,所以我不明白为什么这不起作用。

最佳答案

问题是 ballSprite.Position 返回一个结构,因此当您访问它时,由于值语义,它会创建它的副本。++ 尝试修改该值,但它会修改一个临时副本 - 而不是存储在 Sprite 中的实际结构。

您必须从读取 Position 中获取值并将其放入局部变量,更改该局部变量,然后将局部变量赋值回 Position,或者使用其他类似的方法(可能隐藏它)作为一些 IncrementX 方法)。

Vector2D v;
v = ballSprite.Position;
v.X++;
ballSprite.Position = v;

另一个更通用的解决方案可能是将另一个 Vector2 添加到您的位置。 + 运算符已重载,因此您可以创建一个包含所需更改的新向量,然后将其添加到向量中,而不是一次更新一个单独的组件。

关于c# - 无法修改 XNA Vector 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2534574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com