PAK 文件中的资源可以工作,但之前的文件在 Android 上安装后无效

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

我在 Android 上的虚幻引擎中安装 PAK 文件时遇到问题。成功挂载 PAK 文件后,其中包含的资产将按预期工作。但是,我注意到以前存在的文件(未包含在 PAK 文件中的文件,位于基本目录中)在 Android 上不再有效。奇怪的是,在 Windows 上,一切正常。

这是我正在使用的相关代码片段:

bool AMyGameMode::MountPakFile(FString PakFilePath, const FString& PakFileName)
{
    bool bIsSuccess = false;

    if(!PakFilePath.EndsWith(TEXT("/")))
    {
        PakFilePath += TEXT("/");
    }

    const FString FullPakFilePath =  PakFilePath + PakFileName + TEXT(".pak");
    LogWriteMessage(FString::Printf(TEXT("PakFile Path: %s"), *FullPakFilePath), FColor::Green);

    IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
    FPakPlatformFile* PakPlatformFile = new FPakPlatformFile();
    PakPlatformFile->Initialize(&PlatformFile, TEXT(""));

    if(PlatformFile.FileExists(*FullPakFilePath))
    {
        LogWriteMessage(TEXT("PakFile Exists"), FColor::Green);

        FPlatformFileManager::Get().SetPlatformFile(*PakPlatformFile);

        bIsSuccess = PakPlatformFile->Mount(*FullPakFilePath, 0, NULL);
        if(bIsSuccess)
        {
            LogWriteMessage(("PakFile Mounted Successfully"), FColor::Green);
        }
        else
        {
            LogWriteMessage(("PakFile Mount Failed"), FColor::Red);
        }
    }
    else
    {
        LogWriteMessage(TEXT("PakFile Does not Exist"), FColor::Red);
    }

    return bIsSuccess;
}

当我在Android上调用MountPakFile函数时,传递以下参数:

MountPakFile(TEXT("/data/data/com.package.name/files/assetpacks/pakchunk1/41/41/assets/"), TEXT("pakchunk1"));

在 Windows 上,使用参数:

MountPakFile(TEXT("E:\UE4 Packages\UltimateAppTest\PakFile"), TEXT("pakchunk1"));

在两个平台上,安装操作均成功,如日志消息所示。但是,在 Android 上,我注意到已安装的 PAK 文件内的资源工作正常,而以前存在的文件(PAK 文件外部)不再有效。这些文件在安装到 Android 上之前运行良好。

我已仔细检查文件路径并确保 PAK 文件存在于两个平台上的指定位置。然而,安装过程似乎在某种程度上影响了 Android 上基本文件的可访问性。

有没有人遇到过类似的问题,或者可以提供有关为什么会发生这种差异的见解?我特别想了解为什么 PAK 文件外部的文件在 Android 上不再有效,而 PAK 文件内部的资源却可以正常工作。

任何帮助或建议将不胜感激!

提前谢谢您。

unreal-engine4
1个回答
0
投票

在github项目中看到它保存了原始平台文件并在内容加载后恢复它。

https://github.com/recogni/ue4-orchestrator/blob/master/Source/UE4Orchestrator/Private/UE4Orchestrator.cpp

© www.soinside.com 2019 - 2024. All rights reserved.