プログラムをデバッグ モードで実行すると、null ではないオブジェクトで NullReferenceException がポップされます。ローカル ビューで定義されているように表示されます。問題のオブジェクトは SFML.Graphics.Sprite で、そのフィールドの 1 つだけが null (myInverseTransform) ですが、他のスプライトを確認したところ、そこも null でした。
これを引き起こす原因を知っている人はいますか、または例外が参照している null オブジェクトを見つけるにはどうすればよいですか?
関連するコード:
コードは次のとおりです。
(スプライトで:)
public void Draw(RenderTarget target, RenderStates states)
{
states.Transform *= Transform;
RenderStates.MarshalData marshaledStates = states.Marshal();
if (target is RenderWindow)
{
sfRenderWindow_drawSprite(((RenderWindow)target).CPointer, CPointer, ref marshaledStates);
}
else if (target is RenderTexture)
{
sfRenderTexture_drawSprite(((RenderTexture)target).CPointer, CPointer, ref marshaledStates);
}
}
(変換中:)
public static Transform operator *(Transform left, Transform right)
{
return new Transform(left).Combine(right);
}
public Transform Combine(Transform transform)
{
sfTransform_combine(CPointer, transform.CPointer);
return this;
}
else if (target is RenderTexture)
{
sfRenderTexture_drawSprite(((RenderTexture)target).CPointer, CPointer, ref marshaledStates);
}
}
Sprite.Draw の呼び出し中に this.Transform が定義されている (Locals ビューによる) が、Transform の * 演算子で正しい変数が null であるという問題。