2014-09-01 5 views
0

им процедурно созданием моих карт высот и объявить свою местность в сценарииsplatmap текстура не прилагая в строе в единстве

в редакторе единства, мои splatmaps работают отлично, но когда я строить мой ландшафт просто черный.

Есть ли настройка, которую я, возможно, пропустил при построении, что требуется для того, чтобы заставить значки работать?.

редактор http://answers.unity3d.com/storage/temp/31838-untitle2d.png

сборки http://answers.unity3d.com/storage/temp/31839-untitled.png

я загрузить их при помощи кода с

SplatPrototype[] terrainTexture = new SplatPrototype[4]; 
     terrainTexture[0] = new SplatPrototype(); 
     terrainTexture[0].texture = (Texture2D)Resources.Load("stone"); 
     terrainTexture[1] = new SplatPrototype(); 
     terrainTexture[1].texture = (Texture2D)Resources.Load("sand"); 
     terrainTexture[2] = new SplatPrototype(); 
     terrainTexture[2].texture = (Texture2D)Resources.Load("grass"); 
     terrainTexture[3] = new SplatPrototype(); 
     terrainTexture[3].texture = (Texture2D)Resources.Load("snow"); 

редактировать я попытку добавления текстуры кода в качестве переменных потащило в вместо использования ресурсов .load, также не работал

Редактировать Я нашел работу, которая заставляет ее работать, но ее несчастливо, что я не могу найти правильное решение. кто может увидеть что-то, что может быть причиной этого вопроса

Http: // answers.unity3d.com/questions/171150/terrain-basemap-texture-through-code.html

ответ

0

Вам нужно включить дополнительный шейдер в вашу сборку. Перейдите в edit -> настройки проекта -> графика. В инспекторе увеличьте размер. В новом слоте выберите Nature/Terrain/Diffuse.

Причина, по которой вам нужно сделать это, заключается в том, что Unity будет искать любые активы, на которые ссылаются в сцене, чтобы решить, что включать в сборку и что не учитывать. Поскольку ваш ландшафт построен процедурно, нет объекта местности и нет материала ландшафта, и необходимый шейдер не включается. Следуя приведенным выше шагам, вы в основном говорите Unity, чтобы включить его в любом случае, потому что вы знаете, что вам это понадобится.

0

Я хотел бы добавить в несколько вещей в ответе выше:

  1. Существует а прототипы обновления, называемые TerrainData.RefreshPrototypes(), который должен обновить все доступные прототипы, в том числе детальных текстур и деревьев , Поскольку наземные текстуры являются частью списка прототипов, это поможет единству обновить новые текстуры для местности. (И он также работает внутри Редактора.)

  2. Кроме того, другие обнаружили, что, когда они меняют данные текстур (т. Е. Изменяют данные пикселя), что он приводит к единству, чтобы обновлять материалы, используемые для местности , Они сделали пустой ландшафт, назначили ему пустые базовые текстуры, а затем во время выполнения загрузили карту высот, карты splat и перезаписали текстуры. Это привело к единству для отображения вновь созданных ландшафтов.

Я надеюсь, что это помогает некоторые, так как большая часть активов местности является весьма недокументированные область (и довольно дисфункциональным, тоже) ... Удачи!

 Смежные вопросы

  • Нет связанных вопросов^_^