我正在使用Unity3D项目并使用Mesh
类,
在Mesh
类里面有一个成员变量Vector3[] vertices
。
现在,可以通过以下方式设置mesh.vertices
Vector3[] v = new Vector3[3];
v[0] = new Vector3[0,0,0];
v[1] = new Vector3[1,1,1];
v[2] = new Vector3[2,2,2];
mesh.vertices = v;
设置一个单独的元素,像这样:mesh.vertices[0] = new Vector3(1,1,1)
似乎没有效果。
(另外,mesh.vertices[0].x = 5
也没有效果)。
当我说没有效果时,我的意思是代码编译并运行没有错误,但数组的元素没有改变。
由于顶点代表一个表面,设计师希望将它们一起更改似乎是合乎逻辑的。
我试图用一个简单的代码模仿这个神奇的功能无济于事。 我错过了什么? 属性是什么? 索引器? 有些奇怪的组合?
class Student
{
private int[] grades = {92, 99, 96};
public int[] Grades{
get{
Console.WriteLine("getter: ");
return grades;
}
set{
Console.WriteLine("setter: ");
grades = value;
}
}
}
class HelloWorld
{
static void Main ()
{
int[] low_grades = {53, 51, 55};
Student student = new Student();
student.Grades = low_grades; // This assignment is possible and this is O.K.
student.Grades[0] = 52; // This assignment is Possible and this is NOT O.K.
}
}
如何让客户端为我的成员变量分配一个数组,但是阻止他为数组中的各个元素赋值?
如果您不想直接访问set元素,请将其设置为私有字段并提供设置数组的方法。如果需要,还可以提供一种方法来返回数组的副本作为单独的引用。