为什么链接在这里不起作用,我必须设置一个中间变量?
Why does chaining not work here, and I must set an intermediary variable?
我对 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
为什么会这样?
这有两个原因:
1.JointLimits
是一个结构。
2.JointLimits
声明为自动 属性 变量。
HingeJoint.limits
是 JointLimits
的一种类型,它是 struct
并声明为 auto-属性 ({ get; set; }
) 因此您无法修改直接在其中的变量(min
)。您必须复制 struct
,修改其中的变量,然后将结构分配回 HingeJoint
。 使用 struct
和自动 属性 声明限制变量是您不能这样做的原因。
public JointLimits limits { get; set; }
同样的事情也适用于 transform.position
。你不能直接修改它的 x, y, z 变量,因为 position 是 Vector3
这是一个 struct
并且它也被声明为 auto-属性:
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;
}
我对 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
为什么会这样?
这有两个原因:
1.JointLimits
是一个结构。
2.JointLimits
声明为自动 属性 变量。
HingeJoint.limits
是 JointLimits
的一种类型,它是 struct
并声明为 auto-属性 ({ get; set; }
) 因此您无法修改直接在其中的变量(min
)。您必须复制 struct
,修改其中的变量,然后将结构分配回 HingeJoint
。 使用 struct
和自动 属性 声明限制变量是您不能这样做的原因。
public JointLimits limits { get; set; }
同样的事情也适用于 transform.position
。你不能直接修改它的 x, y, z 变量,因为 position 是 Vector3
这是一个 struct
并且它也被声明为 auto-属性:
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;
}