【虚幻引擎】UE4/UE5 pak挂载

这篇具有很好参考价值的文章主要介绍了【虚幻引擎】UE4/UE5 pak挂载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

B站教学链接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0

一、首先设置UE4引擎的系统环境变量

【虚幻引擎】UE4/UE5 pak挂载

 找到:D:\UE\UE_4.27\Engine\Binaries\Win64,

【虚幻引擎】UE4/UE5 pak挂载

 WindowS+R打开CMD命令

【虚幻引擎】UE4/UE5 pak挂载

运行UnrealPak,运行结果如下

 二、打开虚幻引擎,Cook资源

     注意如果想要加载Pak内资源,那么这些资源必须是经过Cook的。如果打包的是未Cook的资源,那么即使Pak挂载成功,也不可能会成功加载Pak内资源。

【虚幻引擎】UE4/UE5 pak挂载

 Cook好之后,存储的路径在你的I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content\DLC【虚幻引擎】UE4/UE5 pak挂载

 使用命令开始打包

第一种:打包单个文件夹,此处的文件夹为DLC

打包Pak的命令行格式

UnrealPak “存储Pak的路径+Pak包名” -create="Cook好的资源的路径"

【虚幻引擎】UE4/UE5 pak挂载

成功之后会出现文件DLCtest.pak

【虚幻引擎】UE4/UE5 pak挂载

第二种:打包整个Content文件

unrealpak "I:\DLCtest.pak" -create=I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content

第三种:打包单个文件

unrealpak "I:\DLCtest.pak" -create=I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content\DLC\download.uasset

打包完成后就能在你对应的文件夹中找到相对应的文件

【虚幻引擎】UE4/UE5 pak挂载

【虚幻引擎】UE4/UE5 pak挂载

三、挂载Pak包

 1.自动挂载

如果手动将Pak放在以下这些项目路径中,引擎将会自动加载Pak

  • [ProjectName]/Content/Paks
  • [ProjectName]/Saved/Paks
  • Engine/Content/Paks

 2.手动挂载

在Bulid.cs里面加入模块PakFile


public class DBJTest : ModuleRules
{
	public DBJTest(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

		PublicDependencyModuleNames.AddRange
        (
            new string[] 
            {
                "Core",
                "CoreUObject",
                "Engine",
                "InputCore",
                "HeadMountedDisplay",
                "PakFile",
            }
        );
	}
}

MyPlayerController.h文件

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "MyPlayerController.generated.h"

/**
 * 
 */
UCLASS()
class DBJTEST_API AMyPlayerController : public APlayerController
{
	GENERATED_BODY()
	
public:
	virtual void BeginPlay() override;

	UFUNCTION(Exec)
		void TestLoadPak(FString InPakFullPath);
	
	TSharedPtr<class FPakPlatformFile> PakPlatform;
	class IPlatformFile* OldPlatform;
};

MyPlayerController.cpp文件

// Fill out your copyright notice in the Description page of Project Settings.

#include "MyPlayerController.h"
#include "IPlatformFilePak.h"
#include "PlatformFilemanager.h"
#include "Runtime/Engine/Classes/Engine/StaticMeshActor.h"
#include "GenericPlatformFile.h"

void AMyPlayerController::BeginPlay()
{
	Super::BeginPlay();

	OldPlatform = &FPlatformFileManager::Get().GetPlatformFile();
	PakPlatform = MakeShareable(new FPakPlatformFile());
	PakPlatform->Initialize(&FPlatformFileManager::Get().GetPlatformFile(), TEXT(""));
}

void AMyPlayerController::TestLoadPak(FString InPakFullPath)
{
	FPlatformFileManager::Get().SetPlatformFile(*PakPlatform.Get());

	FString PakFileFullPath = InPakFullPath;

	FPakFile* TmpPak = new FPakFile(PakPlatform.Get(), *PakFileFullPath, false);
	FString PakMountPoint = TmpPak->GetMountPoint();
	int32 Pos = PakMountPoint.Find("Content/");
	FString NewMountPoint = PakMountPoint.RightChop(Pos);
	NewMountPoint = FPaths::ProjectDir() + NewMountPoint;
	//FString NewMountPoint = "../../../DBJTest/Content/DLC/";

	TmpPak->SetMountPoint(*NewMountPoint);

	if (PakPlatform->Mount(*PakFileFullPath, 1, *NewMountPoint))
	{
		TArray<FString> FoundFilenames;
		TmpPak->FindFilesAtPath(FoundFilenames, *TmpPak->GetMountPoint(), true, false, false);

		if (FoundFilenames.Num() > 0)
		{
			for (FString& Filename : FoundFilenames)
			{
				if (Filename.EndsWith(TEXT(".uasset")))
				{
					FString NewFileName = Filename;
					NewFileName.RemoveFromEnd(TEXT(".uasset"));
					int32 Pos = NewFileName.Find("/Content/");
					NewFileName = NewFileName.RightChop(Pos + 8);
					NewFileName = "/Game" + NewFileName;

					UObject* LoadedObj = StaticLoadObject(UObject::StaticClass(), NULL, *NewFileName);

					UStaticMesh* SM = Cast<UStaticMesh>(LoadedObj);
					if (SM)
					{
						AStaticMeshActor* MeshActor = GetWorld()->SpawnActor<AStaticMeshActor>(AStaticMeshActor::StaticClass(), FVector(0,0,460), FRotator(0,0,0) );
						MeshActor->SetMobility(EComponentMobility::Movable);
						MeshActor->GetStaticMeshComponent()->SetStaticMesh(SM);
						break;
					}
				}
			}
		}
	}


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

}

世界设置要选择GameMode

【虚幻引擎】UE4/UE5 pak挂载

 运行Play,按下~按键,输入命令testLoadPak I:\DLCtest.pak

【虚幻引擎】UE4/UE5 pak挂载文章来源地址https://www.toymoban.com/news/detail-497524.html

到了这里,关于【虚幻引擎】UE4/UE5 pak挂载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【虚幻引擎】UE4/UE5科大讯飞文字合成语音

    B站视频链接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0   第一步:首先进入讯飞开放平台注册一个账号,然后创建一个 创建一个应用,命名按照你自己的想法来,会产生一个APPID,具体参考UE4如何接入科大讯飞的语音识别_ue4 科大讯飞的语音识别_飞起的猪的博客-CSDN博

    2024年02月13日
    浏览(41)
  • 【虚幻引擎】UE4/UE5鼠标点击事件实现物体移动

     在UE4/UE5中,引擎有它自己的一套框架体系,虚幻就是基于这一个框架体系来实现的。其中就有PlayerController(玩家控制器),玩家控制器中就有对鼠标的一系列设置,包括显示鼠标,允许点击事件等。  1.创建PlayerController,命名为MyPlayerController 2.打开MyPlayerController,勾选参数

    2024年02月10日
    浏览(55)
  • 【虚幻引擎UE】UE4/UE5 功能性插件推荐及使用介绍 2

    (基于UE5 的Python支持插件) 支持Python语言基于UE5进行开发 GIT地址:https://github.com/mamoniem/UnrealEditorPythonScripts (基于UE5 的Haxe支持插件) Haxe是一门新兴的开源编程语言,是一种开源的编程语言。支持Haxe语言基于UE5进行开发。 GIT地址:https://github.com/RobertBorghese/Haxe-UnrealEngine

    2024年02月06日
    浏览(69)
  • 【虚幻引擎UE】UE4/UE5 GIS辅助类插件推荐及使用介绍

    此插件将虚幻引擎连接到Speckle,允许从Speckle接收版本化的3D数据,可以实现Revit、Rhino、Blender、Sketchup、Unity、虚幻引擎、AutoCAD等之间的完全互操作协作。 这是一个涵盖了在展厅、工业产品或其他3D场景中导航的许多可能性的系统。在窗口、触摸屏、手机和Html5上。 只需快速

    2024年02月07日
    浏览(59)
  • 【虚幻引擎UE】UE4/UE5 功能性插件推荐及使用介绍 1

    实现POST/GET基本方法,并支持HEAD带信息。 使用案例:【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件) 能够快速实现打开对话框获取数据的导入、导出路径。 某月限免插件,比较方便的地图插件,可以改改样式直接用。 http下载数据到指定路径 按空格可以切

    2023年04月11日
    浏览(62)
  • UE4,UE5虚幻引擎,Command Console控制台命令,参数集

    1、Command Console控制台命令,虚幻官方文档 https://docs.unrealengine.com/5.0/zh-CN/unreal-editor-interface/ 2、在cmd控制台 help 并按 Enter 3、自动跳转到网页,在网页中,可以查找所有的命令行参数。

    2024年02月15日
    浏览(60)
  • 解决UE4 UE5 虚幻引擎 关卡内或sequence 播放多个视频卡顿问题

    在项目设置中搜索缓存,修改其中的参数即可解决问题,默认为1G,详细见图 经测试,单个关卡内使用蓝图或在sequence内创建媒体,播放30个mp4视频或者序列帧分辨率为1080p,可流畅播放,实时帧数40fps,使用设备(2080ti,内存64G)

    2024年02月11日
    浏览(40)
  • UE4/UE5 虚幻引擎,Pawn的碰撞,怎么防止Pawn移动的时候穿透物体。

    前言:在UE项目开发中,有些我们需要自己新建一个Pawn来控制视角,但是如果我们没有设置Pawn的碰撞,那么Pawn在移动的过程中,很容易穿到Actor里面。而有的时候我们并不需要Pawn穿过物体,就必须要给Pawn增加碰撞。 1、新建一个Pawn类。 2、 添加FloatingPawnMovement(必须添加这

    2023年04月12日
    浏览(39)
  • 【虚幻引擎UE】UE4/UE5 基于2D屏幕坐标获取场景3D坐标 射线检测(蓝图/C++)

    射线检测(Ray Casting) 是一种计算机图形和计算机图形学中的基本技术,用于检测光线或射线是否与三维场景中的物体相交,以确定相交点的位置和其他相关信息。射线检测通常用于实现各种交互功能、渲染效果和物理模拟,包括但不限于鼠标拾取、光线追踪、碰撞检测和物

    2024年02月07日
    浏览(71)
  • UE4,UE5虚幻引擎,怎么在蓝图中获取FPS帧速率,显示在UMG(UI)上

    前言:在UE中可以使用命令行比如stat fps显示帧率,但只是显示在界面,假设我们要在蓝图中获取FPS帧率,并且显示在我们创建的UMG控件蓝图。这种stat fps命令行的形式就不行了,因为它只会固定显示在右上角的位置。 1、在Tick中获取DeltaSeconds,用1除InDeltaTime,得到帧速率。

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包