首页 > 解决方案 > 无法将景观 LayerInfo 对象分配给景观

问题描述

我一直在开发一个自动化系统,该系统需要我生成给定Landscape的LayerInfo对象。到目前为止,我已经能够生成所需的 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;
        }

编辑器截图

标签: c++unreal-engine4

解决方案


推荐阅读