は、これには2つの理由があります。 JointLimits
は構造体です。
。 JointLimits
は、自動プロパティ変数として宣言されています。
HingeJoint.limits
はstruct
と自動プロパティ({ get; set; }
)として宣言されているJointLimits
のタイプであるので、あなたは直接の内側にある変数(min
)を変更することはできません。 struct
のコピーを作成し、その中の変数を変更してから、構造体をHingeJoint
に割り当てます。 struct
と制限変数を宣言するautoプロパティを使用する理由は、それができない理由です。。
public JointLimits limits { get; set; }
transform.position
にも同じことが当てはまります。位置がstruct
あるVector3
の一種であり、それはまた、自動プロパティとして宣言されているので、あなたは、直接そのX、Y、Z変数を変更することはできません。
public Vector3 position { get; set; }
あなたがする必要があります最初にコピーを作成してから変更し、transform.position
に割り当てます。
コード内の別の無関係な問題は、Start
関数です。 Start
ではなくstart
です。
HingeJoint hinge;
void Start()
{
hinge = GetComponent<HingeJoint>();
//Make Limit copy
JointLimits limits = hinge.limits;
//Modify limit variable
limits.min = 0;
//Assign back to HingeJoint
hinge.limits = limits;
}
'HingeJoint'は' min'プロパティを実装しません。 'JointLimits'はそうです。 –
オブジェクトを 'HingeJoint'から' JointLimits'に暗黙的にキャストしています。 https://stackoverflow.com/questions/1339482/typecasting-in-c-sharpも参照してください。 –