Unity 3D: Graphics.DrawMesh больше не работает в Unity 5.3.1f

Я сделал симуляцию, используя данные ГИС для представления карты небольшого города, используя постоянную сетку и средство визуализации сетки для большинства объектов (серые и синие на изображениях). Но некоторые элементы, такие как дома или канализационные стоки, иногда выделяются с помощью сетки и функции UnityEngine.Graphics.DrawMesh.

введите здесь описание изображения

Как вы можете видеть на рисунках, тот же код, что и в 4.6.1f, рендерит сетку, а в 5.3.1 — нет. Хотя вы можете видеть, что сетка установлена ​​​​в представлении «Сцена».

Это код:

protected Mesh m;

public void Update()
{
    if ((isActiveAndEnabled) && (m!=null))
        Graphics.DrawMesh(
            m, transform.localPosition, 
            transform.localRotation, material, 14); //14 = Map Layer
}

Настройки сцены и камеры остаются прежними. Я уже проверил, верно ли условие if ((isActiveAndEnabled) && (m!=null)) — оно верно. Любые мысли, что может вызвать эту проблему?


person Jonas Zimmer    schedule 13.01.2016    source источник
comment
В Unity3D 5.x много ошибок. Может быть, один из них. Просто проверьте нормали сетки, возможно, они перевернуты.   -  person Jerry Switalski    schedule 13.01.2016
comment
Скажите, Джерри, вы могли бы сделать свое первое предложение более точным, удалив 5.x :)   -  person Fattie    schedule 13.01.2016
comment
Я боялся, что это может быть просто снова Old Buggy Unity :/ Спасибо!   -  person Jonas Zimmer    schedule 13.01.2016
comment
@JoeBlow Хе-хе, но я действительно считаю, что 4.5.x и более поздние версии до 5.x были действительно стабильными.   -  person Jerry Switalski    schedule 13.01.2016


Ответы (1)


Проблема заключалась в том, что Map и HighlightedAreas лежали на transform.position.z = 0;. Хотя в Unity 4.6.1 такой проблемы не было, я предполагал, что в 5.X ее не будет.

введите здесь описание изображения

Я попытался переместить родительский объект Highlight ближе к камере, но, поскольку я использовал localPosition, это не повлияло на дочерний объект. Перемещая ребенка, я смог увидеть выделенные области и осознал свою ошибку.

Код изменен на

Graphics.DrawMesh(
        m, transform.position, 
        transform.localRotation, material, 14);

и изменил transform.z родительского объекта Highlight на -0.01f

person Jonas Zimmer    schedule 13.01.2016