这似乎是一个奇怪的问题,但无论如何我都去了。
我有一个名为Sprite的类,它具有" Position"等属性。和"尺寸"。当其中一个属性被更改时,我需要触发一个私有方法,该方法使用Draw()方法中使用的新位置/大小来更改矩形。
所以我想我会使用get set访问器,所以我可以设置私有位置变量然后触发事件。像这样:
private Vector3 position;
public Vector3 Position {
get { return this.position; }
set {
this.position = value;
this.SetDrawRectangle();
}
}
这个工作正常,直到我想使用位置属性之一,如X,Y或Z.所以,如果我这样做:
sprite.Position.X = 10;
它不会工作,我得到的错误是
错误1无法修改' .Sprite.Position'的返回值因为它不是变量。
我必须这样做:
sprite.Position = new Vector3(10, 0, 0);
但是在某些情况下这会很尴尬,因为你必须继续将当前的Y和Z浮动传递回新的Vector3。
有没有人为这种情况得到一些帮助,或者是我试图做错而不可能的事。
提前致谢,我为自己的无知道歉!
答案 0 :(得分:1)
执行此代码时
sprite.Position.X = 10;
不会调用 Sprite.Position
的二传手。它只调用Sprite.Position
的getter,然后调用Vector.X
的setter失败,因为Vector.X
似乎是只读的。
如果您可以修改Vector
课程的代码,则答案为是;如果您不能修改,则答案为否。
答案 1 :(得分:0)
您可以使用Vector3.Set方法。
Position.Set(10, 0, 0);