Я работаю над проектом 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.
}
}
Как я могу сделать так, чтобы клиент мог присвоить массив моей переменной-члену, но не дать ему присваивать значения отдельным элементам в массиве?