这可能看起来像一个奇怪的问题,但无论如何我要去 .
我有一个名为Sprite的类,它具有“Position”和“Size”等属性 . 当其中一个属性被更改时,我需要触发一个私有方法,该方法使用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 .
有没有人为这样的情况得到一些帮助,或者是我正在尝试做的错误而且不可能 .
在此先感谢,我为我的无知道歉!
2 回答
执行此代码时
Sprite.Position
的召唤者不会被召唤 . 它只是为Sprite.Position
调用getter,然后调用Vector.X
的setter,因为Vector.X
似乎是只读的 .因此,如果您可以修改
Vector
类的代码,则答案为是;如果您不能修改,则答案为否,除非您要使用反射 .您可以使用Vector3.Set方法 .