为我的游戏添加 "open with..." 功能

Adding "open with..." functionality to my game

当您右键单击一个文件时,您可以 select 选择 "open with..." 任何 program/executable,这将启动该程序并自动在该程序中打开该文件。我想每个人都知道这一点。

现在我正在统一构建一个游戏(脚本在 c# 中),我希望我完成的构建支持这个功能,这样我的 user/player 就可以右键单击,比如说,一个游戏存档文件,select 打开,然后 select 我的游戏可执行文件。然后游戏应该开始并加载保存的游戏。

我如何实现这个功能?当从文件系统使用这个选项时会发生什么,我如何在我的游戏中处理它?

我不是在问如何实际加载游戏(反正每个游戏都不一样),我只需要知道我如何 "catch" 用户使用我的 game.exe.

如果您想将程序添加到 "Open With" 上下文菜单 (你需要做的是在你的安装程序中,添加一个注册表项,指向你的应用程序,如解释的那样 here 如果您没有安装程序(我认为 unity 5 可以为您构建一个),您只需在游戏中调用

Microsoft.Win32.Registry.SetValue(key, valueName, value, Microsoft.Win32.RegistryValueKind.String);

在场景中使用脚本。或者您可以用 C# 编写一个安装程序来执行此操作。)

如果您只想处理用您的应用程序打开的文件,您需要在 unity 播放器中获取命令行参数,例如文件路径。在第一个加载的场景中编写一个脚本,它读取 System.Environment.GetCommandLineArgs() 返回的字符串数组。第一个参数是可执行文件的名称,因此您需要执行以下操作:

string filepath;
string arguments = System.Environment.GetCommandLineArgs();
if (arguments.Length >= 2)
{
    filepath = arguments[1];
    DoYourThing(filepath);
}
return;

如果您随后右键单击您的文件,使用您的应用打开它,OS 会将文件路径传递给应用,作为第二个命令行参数,并使用上面的代码,您将读取它.