• Ubuntu20.04: UE4.27 中 Source Code 的编辑器下拉框没有 Rider选项


    问题描述

    最近想用 Rider 作为 UE4 开发的 IDE,但安装好 Rider 后,发现编辑器下拉框中没有 Rider 的选项,我检查了 UE4 的插件,发现 Rider Integration 插件已经安装且启用的。
    环境:Ubuntu 20.04 + UE4.27 + Rider2023.2

    在这里插入图片描述
    在这里插入图片描述

    解决方法

    在网上找了挺久,主要都是两种解决方案,有的人可以成功解决问题,但我尝试后都没有生效。

    1、将 Rider 启动文件的绝对路径写入到 RiderLocations.txt ,该文件在 /UE4安装目录/Engine/Plugins/Developer/RiderSourceCodeAccess/Resources/RiderLocations.txt
    详细方法传送门
    2、用虚幻引擎 master 分支RiderSourceCodeAccess 文件夹替换 UE 安装目录内原有的 RiderSourceCodeAccess,然后重新编译UE4。
    RiderSourceCodeAccess 的路径为 /UE安装目录/Engine/Plugins/Developer/RiderSourceCodeAccess
    详细方法传送门
    3、从 JetBrains 的 Toolbox 下重新安装 Rider
    详细方法传送门

    查看插件源码

    在使用1、2 两种办法都无效后,我尝试着去看了下RiderSourceCodeAccess 插件的源码,发现在UE4中加载IDE Rider都是需要找到 Rider 的安装目录,进而在安装目录内找到 ./bin/rider.sh 的启动文件, 于是我去看了搜索 Rider 安装目录的函数。
    搜索安装目录的源码主要在 /UE4安装目录/Engine/Plugins/Developer/RiderSourceCodeAccess/Source/RiderSourceCodeAccess/Private/RiderPathLocator 下,该目录下有着 Linux、Mac、Win 子目录,分别是对应系统的 RiderPathLocator 的源文件。我看了 Linux 下的源文件,即 RiderPathLocatorLinux.cpp

    插件会通过几种方法来找到 Rider 的源文件:

    TSet<FInstallInfo> FRiderPathLocator::CollectAllPaths()
    {
    	TSet<FInstallInfo> InstallInfos;
    	InstallInfos.Append(GetInstalledRidersWithMdfind());
    	InstallInfos.Append(GetManuallyInstalledRiders());	// 手动安装 Rider 的
    	InstallInfos.Append(GetInstallInfosFromToolbox(GetToolboxPath(), "Rider*")); // 从 JetBrains 的 Toolbox 安装的 Rider
    	InstallInfos.Append(GetInstallInfosFromResourceFile());	// 从 RiderLocations.txt 找 Rider 安装路径
    	return InstallInfos;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    GetInstallInfosFromResourceFile() 只在头文件定义了接口,在 Linux 下的源文件中并没有实现,所以方法1在Linux 上并不起作用。
    所以我去看了 GetManuallyInstalledRiders 的实现:

    static FString GetHomePath()
    {
    #if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION <= 20
    	TCHAR CHomePath[4096];
    	FPlatformMisc::GetEnvironmentVariable(TEXT("HOME"), CHomePath, ARRAY_COUNT(CHomePath));
    	const FString FHomePath = CHomePath;
    #else
    	const FString FHomePath = FPlatformMisc::GetEnvironmentVariable(TEXT("HOME"));
    #endif
    
    	return FHomePath;
    }
    
    static TArray<FInstallInfo> GetManuallyInstalledRiders()
    {
    	TArray<FInstallInfo> Result;
    	TArray<FString> RiderPaths;
    	const FString FHomePath = GetHomePath();	// 获取家目录路径
    	// 将家目录路径与 Rider* 拼接,即 家目录路径/Rider*
    	const FString LocalPathMask = FPaths::Combine(FHomePath, TEXT("Rider*")); 
    	// 搜索匹配 '家目录路径/Rider*' 的目录
    	IFileManager::Get().FindFiles(RiderPaths, *LocalPathMask, false, true);
    
    	for(const FString& RiderPath: RiderPaths)
    	{
    		// 获取完整的目录,即
    		FString FullPath = FPaths::Combine(FHomePath, RiderPath);
    		// 在 FullPath 目录下找到可执行文件,即 ./bin/rider.sh
    		TOptional<FInstallInfo> InstallInfo = FRiderPathLocator::GetInstallInfoFromRiderPath(FullPath, FInstallInfo::EInstallType::Installed);
    		if(InstallInfo.IsSet())
    		{
    			Result.Add(InstallInfo.GetValue());
    		}
    	}
    	return Result;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    所以我发现可能是我的 Rider 安装目录的命名不符合搜索的规则,所以才没有 Rider选项。

    最终解决

    因为我的 Rider 安装路径本来就是在家目录下,只是目录名是 JetBrains Rider 2023.2 ,所以我将起它重命名,以 Rider开头,这样的话,插件就能找到 Rider 的安装路径了。
    修改好后,用UE4 打开项目,一般就能看到编辑器下拉框中有 Rider 选项了。
    在这里插入图片描述
    如果还是没有的话或者你修改了RiderSourceCodeAccess 里面的源码,你需要重新构建你的项目。
    用 Rider 打开你的 project,选中你的 project 右键,选择 高级构建操作--> 重新构建所选项目
    这个过程大概会话 40~60分钟。
    构建成功后,再次使用 UE4 打开你的项目,就可以看到 Rider 选项了。

  • 相关阅读:
    塔式服务器介绍
    Eclipse 主网即将上线迎空投预期,Zepoch 节点或成受益者?
    项目进展(二)-配置MCT8316ZR芯片,主要学习如何根据数据手册配置外设等
    初识Redis
    2022年信息安全工程师下午真题及答案解析
    本地电脑如何连接使用腾讯云服务器
    Java给Excel设置单元格格式
    认识UDP、TCP协议
    EasyNLP 中文文图生成模型带你秒变艺术家
    Java 网络编程之TCP(二):基于BIO的聊天室
  • 原文地址:https://blog.csdn.net/qq_34168988/article/details/136426536