当前位置: 首页 > news >正文

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 安装的 RiderInstallInfos.Append(GetInstallInfosFromResourceFile());	// 从 RiderLocations.txt 找 Rider 安装路径return InstallInfos;
}

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

static FString GetHomePath()
{
#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION <= 20TCHAR CHomePath[4096];FPlatformMisc::GetEnvironmentVariable(TEXT("HOME"), CHomePath, ARRAY_COUNT(CHomePath));const FString FHomePath = CHomePath;
#elseconst FString FHomePath = FPlatformMisc::GetEnvironmentVariable(TEXT("HOME"));
#endifreturn 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.shTOptional<FInstallInfo> InstallInfo = FRiderPathLocator::GetInstallInfoFromRiderPath(FullPath, FInstallInfo::EInstallType::Installed);if(InstallInfo.IsSet()){Result.Add(InstallInfo.GetValue());}}return Result;
}

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

最终解决

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

http://www.lryc.cn/news/309878.html

相关文章:

  • 【论文阅读-PRIVGUARD】Day4:3节
  • 新一代电话机器人开源PHP源代码
  • dockerdocker-copose_限制容器cpu和内存
  • 【leetcode】圆圈中最后剩下的数字
  • 利用python批量将.shp文件转换坐标生成.geojson文件,再将.geojson转换成.csv文件,最后将csv文件插入数据库表
  • 远程服务器Ubuntu 18.04安装VNC远程桌面
  • 30天自制操作系统(第23天)
  • 基于Rust语言,和WebAssembly技术,与JavaScript结合,的具体应用场景
  • 【MATLAB源码-第154期】基于matlab的OFDM系统多径信道下块状和梳妆两种导频插入方式误码率对比仿真。
  • Linux 下 socket 编程介绍及 TCP 客户端与服务端创建示例
  • JetBrains Gateway Github Copilot 客户端插件和主机插件
  • 【web APIs】3、(学习笔记)有案例!
  • 使用css reset 还是使用Normalize.css
  • 英语中的提问方式(问法)(bug提问、bug描述)
  • xss.haozi.me靶机练习
  • 2.1 mov、add和sub加减指令实操体验
  • 计算机设计大赛 深度学习机器视觉车道线识别与检测 -自动驾驶
  • 中间件安全(概述)有中间件的各类链接和官网信息和漏洞库以及配置问题和开源工具
  • Unity铰链四杆机构设计和运动仿真
  • Python爬虫——解析常用三大方式之Xpath
  • C#判断DataTable1 A列的集合是否为DataTable2 B列的集合的子集
  • VirtualBox 桥接网卡 未指定 “未能启动虚拟电脑Ubuntu,由于下述物理网卡未找到:”
  • 基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】
  • vscode如何远程到linux python venv虚拟环境开发?(python虚拟环境、vscode远程开发、vscode远程连接)
  • 蓝桥杯第十二届电子类单片机组程序设计
  • 基于springboot+vue的工作流程管理系统
  • 【LeetCode刷题】146. LRU 缓存
  • 奇酷网络用AI思维办公:不允许做PPT,只能用Word,只能一页纸
  • 【笔记】-编程语言以及应用领域
  • MWC 2024丨美格智能推出5G RedCap系列FWA解决方案,开启5G轻量化新天地