Проблема
Unity отбраковывает объекты, которые находятся за пределами экрана, используя Render.bounds
, которые в основном являются Mesh.bounds
но с примененными локальными преобразованиями (положение, поворот, масштаб).
В момент создания меня sh через
_planeMesh = new Mesh();
этот me sh пуст и принимает значение по умолчанию bounds (center 0,0,0
and extends 0,0,0
).
Позже, когда вы меняете ветки, вы не вычисляете новые границы, но все равно используете начальные.
Следовательно, вы заметили, что "неправильное" удаление происходит только в том случае, если нижний левый угол (находящийся на 0,0,0
) покидает экран, поскольку Unity думает, что это все ваше Я sh.
![enter image description here](https://i.stack.imgur.com/9DBOT.gif)
Решение
Каждый раз, когда вы меняете что-то во мне sh, вы должны звонить RecalculateBounds
, чтобы обновить границы.
void Update()
{
_planeMeshVertices[0] = new Vector3(1, 0, 0);
_planeMeshVertices[1] = new Vector3(0, 0, 0);
_planeMeshVertices[2] = new Vector3(1, 0, 50);
_planeMeshVertices[3] = new Vector3(0, 0, 50);
_planeMesh.SetVertices(_planeMeshVertices);
_planeMesh.RecalculateBounds();
}
![enter image description here](https://i.stack.imgur.com/6suzY.gif)