unreal获取绝对路径的方法_unreal4 路径动画 - CSDN
  • 获取各种路径


    前言

    有时候,我们可能会需要外部文件来实现一些功能,那么这时候就需要获取相关路径了。unreal 中在C++ 提供关于FPath这个api,基本可以满足所有情况。

    本文会在翻译参考文章的同时,会加入一些实际使用的相关函数。以方便以后来查询。


    Overview

    小伙伴们,这里将为你提供打包游戏后如何获取多种路径的方法。你不需要在Editor模式下测试时使用### ConverRelativePathToFull这个方法,即使它依然有用。

    但它对于打包(exe)模式来说,却是必不可少的。

    一下是UE4 C++ FPath:: functions 返回的各种路径。

    你可以使用其中任何一种在你的打包文件中来构建你自己的路径目录。


    How It Works

    所有其他路径都基于exe所在路径 BaseDir的。
    这是在运行时决定的,因此如果项目移动位置了,以下所获取的路径依然是正确的。

    InstallDir/WindowsNoEditor/GameName/Binaries/Win64

    //InstallDir/WindowsNoEditor/GameName/Binaries/Win64
    FString ThePath = FString(FPlatformProcess::BaseDir());

    InstallDir/WindowsNoEditor/ (or other OS)

    //InstallDir/WindowsNoEditor/
    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::RootDir());

    InstallDir/WindowsNoEditor/GameName

    //InstallDir/WindowsNoEditor/GameName
    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::GameDir());

    InstallDir/WindowsNoEditor/GameName/Content

    //InstallDir/WindowsNoEditor/GameName/Content
    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::GameContentDir());

    InstallDir/WindowsNoEditor/GameName/Saved

    //InstallDir/WindowsNoEditor/GameName/Saved
    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::GameSavedDir());

    InstallDir/WindowsNoEditor/GameName/Saved/Logs

    //InstallDir/WindowsNoEditor/GameName/Saved/Logs
    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::GameLogDir());

    InstallDir/WindowsNoEditor/GameName/Plugins(新增)

    //InstallDir/WindowsNoEditor/GameName/Plugins
    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::ProjectPluginsDir());

    ps:
    (1)4.18版本可能要求你更改为FPaths::ProjectDir();
    (2)需要更多的方法可以查找FPath相关api。

    Sandbox File Path

    当程序以WindowsNoEditor 模式运行时,所有文件的 I/O 将存于沙盒Sandbox文件夹下。

    在本例中,其实际磁盘路径为ConvertToSandboxPath所包裹,定义于 IPlatformFileSandboxWrapper.cpp当中。此处的ConvertToSandboxPath 将有别于 FPaths::ConvertToSandboxPath

    为了获取磁盘上实际的文件名,你需要调用GetFilenameOnDisk 来获取实际的文件名。
    注意:该文件必须写入磁盘。否则,GetFilenameOnDisk 将返回路径名。

    IFileManager& FileManager = IFileManager::Get();
    FString DiskFilename = FileManager.GetFilenameOnDisk(*FullFilename);

    Dynamic Relocation of Project(动态获取路径)

    以上方法在你移动打包游戏后,依然有效。


    Conclusion

    现在,你将知道如何基于你的游戏路径来指定你想要的路径了。

    参考

    展开全文
  • 有时候,我们可能会需要外部文件来实现一些功能,那么这时候就需要获取相关路径了。...小伙伴们,这里将为你提供打包游戏后如何获取多种路径方法。你不需要在Editor模式下测试时使用### ConverRelative...

    有时候,我们可能会需要外部文件来实现一些功能,那么这时候就需要获取相关路径了。unreal 中在C++ 提供关于FPath这个api,基本可以满足所有情况。本文会在翻译参考文章的同时,会加入一些实际使用的相关函数,以方便以后来查询。

     

    Overview

     

    小伙伴们,这里将为你提供打包游戏后如何获取多种路径的方法。你不需要在Editor模式下测试时使用### ConverRelativePathToFull这个方法,即使它依然有用。

    但它对于打包(exe)模式来说,却是必不可少的。

    一下是UE4 C++ FPath:: functions 返回的各种路径。

    你可以使用其中任何一种在你的打包文件中来构建你自己的路径目录。

     

    How It Works

     

    所有其他路径都基于exe所在路径 BaseDir的。

    这是在运行时决定的,因此如果项目移动位置了,以下所获取的路径依然是正确的。

     

    InstallDir/WindowsNoEditor/GameName/Binaries/Win64

    
     

     

    1

    //InstallDir/WindowsNoEditor/GameName/Binaries/Win64

    2

    FString ThePath = FString(FPlatformProcess::BaseDir());

     

    InstallDir/WindowsNoEditor/ (or other OS)

    
     

     

    1

    //InstallDir/WindowsNoEditor/

    2

    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::RootDir());

     

    InstallDir/WindowsNoEditor/GameName

    
     

     

    1

    //InstallDir/WindowsNoEditor/GameName

    2

    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::GameDir());

     

    InstallDir/WindowsNoEditor/GameName/Content

    
     

     

    1

    //InstallDir/WindowsNoEditor/GameName/Content

    2

    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::GameContentDir());

     

    InstallDir/WindowsNoEditor/GameName/Saved

    
     

     

    1

    //InstallDir/WindowsNoEditor/GameName/Saved

    2

    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::GameSavedDir());

     

    InstallDir/WindowsNoEditor/GameName/Saved/Logs

    
     

     

    1

    //InstallDir/WindowsNoEditor/GameName/Saved/Logs

    2

    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::GameLogDir());

     

    InstallDir/WindowsNoEditor/GameName/Plugins(新增)

    
     

     

    1

    //InstallDir/WindowsNoEditor/GameName/Plugins

    2

    FString ThePath = FPaths::ConvertRelativePathToFull(FPaths::ProjectPluginsDir());

     

    ps:

    (1)4.18版本可能要求你更改为FPaths::ProjectDir();

    (2)需要更多的方法可以查找FPath相关api。

     

    Sandbox File Path

     

    当程序以WindowsNoEditor 模式运行时,所有文件的 I/O 将存于沙盒Sandbox文件夹下。

     

    在本例中,其实际磁盘路径为ConvertToSandboxPath所包裹,定义于 IPlatformFileSandboxWrapper.cpp当中。此处的ConvertToSandboxPath 将有别于 FPaths::ConvertToSandboxPath。

     

    为了获取磁盘上实际的文件名,你需要调用GetFilenameOnDisk 来获取实际的文件名。

    注意:该文件必须写入磁盘。否则,GetFilenameOnDisk 将返回路径名。

    
     

     

    1

    IFileManager& FileManager = IFileManager::Get();

    2

    FString DiskFilename = FileManager.GetFilenameOnDisk(*FullFilename);

     

    Dynamic Relocation of Project(动态获取路径)

     

    以上方法在你移动打包游戏后,依然有效。

     

    Conclusion

     

    现在,你将知道如何基于你的游戏路径来指定你想要的路径了。

    展开全文
  • 在windows端用FPaths::ConvertRelativePathToFull可以将相对路径转成绝对路径.  在Andoird端,就麻烦些。可模仿UE4源码中AndroidFile.Cpp转换相对路径的方式编写自己的转换函数。  例子:...

      在windows端用FPaths::ConvertRelativePathToFull可以将相对路径转成绝对路径.

      在Andoird端,就麻烦些。可模仿UE4源码中AndroidFile.Cpp转换相对路径的方式编写自己的转换函数。

      例子:https://answers.unrealengine.com/questions/498328/androidconvertrelativepathtofull-didnt-work.html

    FString ACpp_DesignPawn::GetAndroidFileBasePath()
    {
    #if PLATFORM_ANDROID
    	extern FString GFilePathBase;
    	return GFilePathBase + FString("/UE4Game/") + FApp::GetGameName() + FString("/");
    #else
    	return FString("");
    #endif
    }
    

      

    转载于:https://www.cnblogs.com/linqing/p/6206456.html

    展开全文
  • 如题,我想在游戏启动后加载绝对路径下的资源怎么加载啊, 1、UObject* obj = LoadObject(nullptr, TEXT("/Game/NewMaterial")); 这样材质能够正常加载 2、UObject* obj = LoadObject(nullptr, TEXT("D:\\...
  • 一直在研究虚幻的插件,期间碰到许多诸如文件操作,路径操作等问题,总结记录一下。 环境:UE4版本4.19.2+Win10+VS2017。 文件操作类(一):IPlatformFile //实例化IPlatformFile对象 IPlatformFile...

    感谢博主,原博地址:https://blog.csdn.net/qq_35221523/article/details/80462176

    一直在研究虚幻的插件,期间碰到许多诸如文件操作,路径操作等问题,总结记录一下。

    环境:UE4版本4.19.2+Win10+VS2017。

    文件操作类(一):IPlatformFile

    //实例化IPlatformFile对象
    IPlatformFile& fileManager = FPlatformFileManager::Get().GetPlatformFile();
    //判断文件是否存在
    fileManager.FileExists(const TCHAR* Filename);
    //删除文件,执行了删除操作返回true,只读文件无法执行删除
    fileManager.DeleteFile(const TCHAR* Filename);
    //拷贝文件,选择参数为拷贝方式
    fileManager.CopyFile(const TCHAR* To, const TCHAR* From, EPlatformFileRead ReadFlags = EPlatformFileRead::None, 
                                                            EPlatformFileWrite WriteFlags = EPlatformFileWrite::None);
    //递归创建一个文件夹
    fileManager.CreateDirectoryTree(const TCHAR* Directory);
    //递归删除一个文件夹,包括包含的文件
    fileManager.DeleteDirectoryRecursively(const TCHAR* Directory);
    //将目标文件夹包含子文件夹下所有的文件以字符串数组的形式赋值给FoundFiles,可以附带文件扩展名过滤,
    fileManager.FindFilesRecursively(TArray<FString>& FoundFiles, const TCHAR* Directory, const TCHAR* FileExtension);
     
    

    详见定义位置:Runtime/Core/Public/GenericPlatform/GenericPlatformFile.h

    Runtime/Core/Public/HAL/PlatformFilemanager.h

    文件操作类(二):FFileHelper

    其实是封装好的线程安全的工具类,不过相对的功能不是很全,推荐读写文件时使用,由于方法较少,这里以写入文件及加载文件举栗:

    //覆写模式写入文件内容
    FFileHelper::SaveStringToFile( 
            const FString& Content, 
                const TCHAR* Filename, 
                    EEncodingOptions EncodingOptions = EEncodingOptions::AutoDetect, 
                        IFileManager* FileManager = &IFileManager::Get(), 
                            uint32 WriteFlags = 0 );
    

    其中,覆写模式只需要提供前两个参数就可以了,Content为写入内容,而后三种在自定义模式时需要全部提供,例如:

    //换行并以追加模式写入文件内容
    FFileHelper::SaveStringToFile("\r\n"+Content, *Filename,
    		FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), EFileWrite::FILEWRITE_Append);
    

    其中,EEncodingOptions 为编码格式的枚举类型,定义在 FileHelper.h 中,分别有以下五种:

    • AutoDetect
    • ForceAnsi
    • ForceUnicode
    • ForceUTF8
    • ForceUTF8WithoutBOM

    倒数第二个参数为获取实例化的文件操作对象,

    EFileWirte为写入模式的枚举类型,定义在 FileManager.h 中,分别有以下六种:

    • FILEWRITE_None
    • FILEWRITE_NoFail
    • FILEWRITE_NoReplaceExisting
    • FILEWRITE_EvenIfReadOnly
    • FILEWRITE_Append
    • FILEWRITE_AllowRead

    需要注意的是,在C++中"\n"符号指光标移到下一行的当前位置,"\r"指光标移到行首,需结合使用。

    //加载文件内容为字符串,赋值给参数Result,最后的可选参数是校验标识,一般用不到
    FFileHelper::LoadFileToString( FString& Result, const TCHAR* Filename, EHashOptions VerifyFlags = EHashOptions::None );
    

    详见定义位置:Runtime/Core/Public/Misc/FileHelper.h

    路径操作类:FPaths

    FPaths::RootDir();//返回根目录路径
    FPaths::ProjectDir();//返回项目所在文件夹路径,注意:4.18版本为 GameDir();已经无法在新版中使用
    FPaths::ProjectConfigDir();//返回项目配置文件夹路径
     
    FPaths::RemoveDuplicateSlashes(FString& InPath);//删除InPath中重复的斜杠
    FPaths::ConvertRelativePathToFull(const FString& InPath);//将相对路径转换为绝对路径并返回
    FPaths::ValidatePath(const FString& InPath, FText* OutReason = nullptr);//校验路径返回是否正确,可选参数用于替换路径中的失效字符
     
    //分割路径,根据给定分隔符 ExtensionPart 将InPath 分割为两部分,分别赋值给参数PathPart和FileNamePart,可以理解为左右两部分
    FPaths::Split( const FString& InPath, FString& PathPart, FString& FilenamePart, FString& ExtensionPart );
     
    //将输入的多个路径拼接成一个路径,可以拼接字符串,类似FString中的字符串拼接
    FPaths::Combine(PathTypes&&... InPaths)
    

    详见定义位置:Paths.h

    展开全文
  • Unreal Engine 4 书籍翻译 Building an RPG with Unreal 三 第3章 探索和战斗 创建角色 接口 PlayerController The Pawn 游戏模式类 Unreal Engine 4 书籍翻译 Building an RPG with Unreal (三)好记性不如...
  • Unreal4 入门

    2015-07-16 10:16:39
    使用Unreal4引擎前需要安装 或者编译引擎。 下面就为同学们介绍下 Unreal4 安装配置。 一. 在Win7下安装Unreal4 在Win7下安装Unreal4需要以下几个步骤: 1. 打开“控制面板”的“程序和功能” 检查...
  • 一:Unreal4 文件导入绝对路径和相对路径  通常文件放入Content目录下,打开工程会自己检测到并且询问用户是否导入,那么如果在这个目录外呢?我们希望在团队中管理文件却不打包出去,这时候就需要获取路径了。 ...
  • save game to slot 节点调用后,如果在没打包之前会在项目文件本地建立SaveGames...不过我们可以通过修改c++更改默认存储路径。在此附上c++相关函数。1.自定义函数调用系统SaveGameToSlot函数。2.一直转到定义查...
  • 相对坐标、绝对坐标、世界坐标的含义 UI 粒子系统 影音 序 为什么写博客? 整理与记录:计算机领域,需要学习的东西很多,而且技能更新换代快,需要不断的学习,知识越来越多,但很多时候一段时间不用又...
  • 关于Directory类

    2017-02-27 19:55:18
    Directory类的成员函数
  • 一、对象销毁 纯C++类销毁 尽量不要使用new、delete方案,可以使用智能指针。智能指针会使用引用计数来完成自动的内存释放。 使用MakeShareable函数可以来转化普通指针为智能指针。... YourClassPtr = ...
  • FSoftObjectPath,FSoftClassPath,FSoftObjectPtr,TSoftObjectPtr,...在UE4 4.18版本之前,资源的路径软引用采用的FStringAssetReference,FStringClassReference,FAssetPtr,TAssetPtr, TAssetSubclas...
  • 要实现UE4C++到第三方库的调用,需要自己在自己创建的插件库里的\Source路径下创建一个目录为ThirdParty的文件夹在里面放入你需要放入的第三方库 当你放入了第三方库的文件之后,需要自己写一个cs文件,用于UE4...
  • 修改右键菜单应该在注册表中,具体的说,是在HKEY_CLASSES_ROOT根键下(这里可是右键菜单中所有命令的根源哦!)。展开该根键,其下的子键主要有两种:扩展名键(.+扩展名)和类定义键。一般地说,只要是在windows...
  • show exploits 列出metasploit框架中的所有渗透攻击模块。 show payloads 列出metasploit框架中的所有攻击载荷。 show auxiliary 列出metasploit框架中的所有辅助攻击载荷。 search name 查找metasploit框架中所有的...
  • 3D游戏引擎剖析

    2015-02-21 10:11:39
    介绍 自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎"。 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用...
  • 1. 智能指针 TSharedPtr 智能指针TsharedPtr是虚幻自己定义的的指针类型, 用于内存管理,但是继承于UObject的类不需要用智能指针, 用普通的指针就行, 因为继承于UObject的内存回收是靠虚幻自己的GC系统回收的,...
  • MY BLOG DIRECTORY:YivanLee:专题概述及目录​zhuanlan.zhihu.comINTRODUCTION:SD里建立材质库以后,我们需要用一个手段去控制它们,这时候很多操作都是繁琐的,所以可以用插件解决,比如批量组合一些节点,用一...
1 2 3 4 5 ... 7
收藏数 140
精华内容 56
关键字:

unreal获取绝对路径的方法