全站-加入QQ频道-第一版.png
全站-加入QQ频道-第一版.png
近期平台发版更新修复了一些问题,如果还有问题请反馈给站长
(遇到相关问题请携带截图私信给站长残天

全站通知:

在 Mac平台 通过 CrossOver/Wine 游玩觅长生

阅读

    

2024-07-11更新

    

最新编辑:果冻哪都是

阅读:

  

更新日期:2024-07-11

  

最新编辑:果冻哪都是

来自觅长生WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
果冻哪都是
首页攻略在 Mac平台 通过 CrossOver/Wine 游玩觅长生

关键词:MacOs 觅长生 苹果电脑 CrossOver Wine

准备工作

首先请前往 Steam 购买正版游戏。


对于使用 CrossOver 的玩家:

  1. 安装 Steam 容器。
  2. 登陆 Steam,然后运行 觅长生。

CrossOver.png

对于使用 wine 进行游玩的玩家,感觉有点复杂,流程我不太清楚,请君自行努力,本文要点在后面。

问题

然后才是本文重点,我们会碰到两个问题,分别是:

  1. 设置中的”应用“点了没有效果。
  2. 分辨率无法修改。
  3. Mod用不了。


接下来我们一一解决。

设置 与 分辨率

这俩是一个问题,U3D在获取可选的屏幕分辨率的时候发现一个能用的都没有。近而在点击“应用”的时候报错。

为了修正这个问题,我们要修改游戏代码。

1、下载 dnSpy

前往 GitHub 下载 Release v6.1.8 · dnSpy/dnSpy · GitHub ,通常是选 dnSpy-net-win64.zip。

对于没有梯子的请使用 GitHub Proxy 代理加速

下载链接是 https://github.com/dnSpy/dnSpy/releases/download/v6.1.8/dnSpy-net-win64.zip

2、定位方法

解压下载的压缩包,然后在 CrossOver/wine 打开 dnSpy.exe。

点击顶部栏 文件 > 打开,选取游戏目录下 觅长生\觅长生_Data\Managed 这个目录的 Assembly-CSharp.dll 这个文件。

DnSpy.png


在左侧栏的 程序集资源管理器 中依次展开 Assembly-CSharp > Assembly-CSharp.dll > Tab > TabSetPanel 。

找到特定的方法.png


如果看不到 程序集资源管理器 的窗口,可以点击顶部栏 视图 > 程序集资源管理器。

Dnspy-show-dllbrowser.png

3、修改方法

在 dnSpy 中,如下图,我们可以通过 双击方法名,右键 > 编辑方法 来对方法进行编辑。

DnSpy 中 如何编辑方法.gif


我们需要修改两个方法:InitDropdown() 和 InitResolutionsDict()。


InitDropdown()


将方法体中的这一段

		if (value == 1)
		{
			this.ResolutionDropdown.interactable = false;
			this.ResolutionDropdown.value = this.ResolutionDropdown.options.Count - 1;
			return;
		}


去掉

this.ResolutionDropdown.interactable = false;

使得在 全屏 状态下也能改分辨率。即改成下面的样子。

if (value == 1)
{
    this.ResolutionDropdown.value = this.ResolutionDropdown.options.Count - 1;
    return;
}


InitResolutionsDict()

往方法体的末尾添加如下代码

	if (num == 0)
	{
	    int from = 1000; // 最小可选分辨率宽度,可根据你的屏幕分辨率手动调整
	    int to = 1600;   // 最大可选分辨率宽度,可根据你的屏幕分辨率手动调整
		for (int j = from; j < to; j += 40)
		{
			this.ResolutionsDict.Add(num, new MResolution
			{
				X = j,
				Y = Mathf.FloorToInt((float)j * 0.5625f)
			});
			num++;
		}
		this.ResolutionsDict.Add(num, new MResolution
		{
			X = to,
			Y = Mathf.FloorToInt((float)to * 0.5625f)
		});
	}

确认修改后这个方法经过软件优化后,大概长这个样子

private void InitResolutionsDict()
{
	List<int> list = new List<int>();
	this.ResolutionsDict = new Dictionary<int, MResolution>();
	int num = 0;
	foreach (Resolution resolution in Screen.resolutions)
	{
		if (!list.Contains(resolution.width) && Mathf.Abs((float)resolution.height / (float)resolution.width - 0.5625f) <= 0.001f)
		{
			MResolution mresolution = new MResolution();
			mresolution.X = resolution.width;
			mresolution.Y = resolution.height;
			this.ResolutionsDict.Add(num, mresolution);
			num++;
			list.Add(mresolution.X);
		}
	}
	if (num == 0)
	{
		int num2 = 1000;
		int to = 1600;
		for (int i = num2; i < to; i += 40)
		{
			this.ResolutionsDict.Add(num, new MResolution
			{
				X = i,
				Y = Mathf.FloorToInt((float)i * 0.5625f)
			});
			num++;
		}
		this.ResolutionsDict.Add(num, new MResolution
		{
			X = to,
			Y = Mathf.FloorToInt((float)to * 0.5625f)
		});
	}
}

4、保存模块

点击顶部栏的 文件 > 保存模块,最后点击弹出窗口 确认,等待进度完成即可。

Mod 用不了

是因为 bepinex 针对 winhttp 的 “劫持” 没能生效,从而整个 Mod 框架未运行。


在 CrossOver 中,进入对应容器的面板,点击 控制面板 > Wine配置,然后进入 函数库 标签页,在 新增函数库顶替 的下拉中找到 winhttp,然后点击 添加,最后确认修改即可。

如何修改 CrossOver 的容器的配置以使 Mod 生效.png


在 Wine 中,请参考 https://docs.bepinex.dev/v5.4.21/articles/advanced/proton_wine.html 完成。