无法将景观 LayerInfo 对象分配给景观

问题描述 投票:0回答:1

我一直在开发一个自动化系统,需要我生成给定LandscapeLayerInfo对象。到目前为止,我已经能够生成所需的 LayerInfo 对象,但我无法分配它们,或者更准确地说,当我尝试在 ULandscapeInfo 属性中分配必要的图层时,它们出现在编辑器中,但是没有分配,除非我保存它们并重新启动引擎,它们在编辑器中也显得很奇怪,如图所示。我认为这与此线程中的问题类似。下面的代码负责分配 LayerInfo:

        // This method creates a
        // new layer info object
        UWorld * currentWorld = GetWorld();
        ULevel * level = currentWorld->GetLevel(0); // TODO : just for debuging 
        ULandscapeLayerInfoObject* layerInfo = Landscape->CreateLayerInfo(*(layerName), level);
        bool isDirty = layerInfo->MarkPackageDirty();
    
        // Get a reference for the landscape Info
        ULandscapeInfo* landscapeInfo = Landscape->GetLandscapeInfo();
        landscapeInfo->CreateLayerEditorSettingsFor(layerInfo);
        FLandscapeInfoLayerSettings* layerSettings = &landscapeInfo->Layers[1];
    
        landscapeInfo->Layers[0] = FLandscapeInfoLayerSettings(layerInfo, Landscape);
        UEditorAssetLibrary::SaveAsset(assetName, false);
        
        // Assign the respective values
        if (!layerSettings->LayerInfoObj)
        {
            layerSettings->Owner = Landscape;
            layerSettings->LayerInfoObj = layerInfo;
            layerSettings->bValid = true;
        }

Editor Screenshot

c++ unreal-engine4
1个回答
0
投票

我知道这有点晚了,但我用一个我发现对我有用的解决方案回复了虚幻线程:

InfoObject->LayerName = LandscapeLayerSettings.LayerName;
InfoObject->bNoWeightBlend = false;

if (!LandscapeLayerSettings.LayerInfoObj)
{
        LandscapeLayerSettings.Owner = Landscape;
        LandscapeLayerSettings.bValid = true;
        LandscapeLayerSettings.LayerInfoObj = InfoObject;
        LandscapeLayerSettings.GetEditorSettings().LayerInfoObj = InfoObject;
}
© www.soinside.com 2019 - 2024. All rights reserved.