我对C#比较新。我有以下脚本摘录:
public class Flipper : MonoBehavior {
HingeJoint hinge;
void start () {
hinge = GetComponent<HingeJoint>();
hinge.limits.min = 0;
}
}
第hinge.limits.min = 0
行;不编译;我需要分两步完成,中间变量赋值如下:
JointLimits limits = hinge.limits;
limits.min = 0
为什么会这样?
答案 0 :(得分:3)
这有两个原因:
1 。JointLimits
是一个结构。
2 。JointLimits
被声明为自动属性变量。
HingeJoint.limits
是JointLimits
的一种struct
,并声明为自动属性({ get; set; }
),因此您无法修改变量({ {1}})直接在其中。您必须复制min
,修改其中的变量,然后将结构分配回struct
。 使用HingeJoint
和auto属性声明限制变量是您无法做到的原因。
struct
同样的事情适用于public JointLimits limits { get; set; }
。您无法直接修改其 x , y , z 变量,因为position是transform.position
的类型,它是一个Vector3
并且它也被声明为auto-property:
struct
您必须首先复制它,修改它然后再将其分配回public Vector3 position { get; set; }
。
代码中另一个不相关的问题是transform.position
函数。它是Start
而非Start
。
start