【发布时间】:2014-03-01 06:36:01
【问题描述】:
(在下面的代码中,player 是一个包含 Vector2 的类型,称为 Vector)
Vector2 v = player.Vector;
v.X -= player.Speed * (float)gameTime.ElapsedGameTime.TotalSeconds;
player.Vector = v;
对比
player.Vector = new Vector2(player.Vector.X - player.Speed * (float)gameTime.ElapsedGameTime.TotalSeconds, player.Vector.Y);
它们都完成了相同的任务(绕过“无法修改返回值,因为它不是变量”错误),但其中一个比另一个更有效?
一个人使用更少的内存吗? (没有权利?) 执行得更快吗? 有没有更好的办法?
【问题讨论】:
-
大声笑,你只是在解决 XNA 问题! :)
-
@Evorlor 你得到了这个错误,因为 Vector2 是一个结构,所以你正在使用结构看这里msdn.microsoft.com/en-us/library/…
-
@Evorlor 看stackoverflow.com/questions/3729873/…这个帖子的第二个答案很高兴知道为什么你在工作时会收到“无法修改返回值,因为它不是变量”的错误with struct(以防你不知道)
-
是的,我读了大约 3-4 次。乔恩斯基特规则:)
-
当我查看您的问题时,我试图记住错误的原因,但我无法记住错误,然后我也搜索了错误:)
标签: c# vector xna pass-by-value