凡科建站做的网站有什么短板,关于网页设计的论文题目,河源市seo网站设计,兰州网站优化软件内容将会持续更新#xff0c;有错误的地方欢迎指正#xff0c;谢谢! Unity 之通过自定义协议从浏览器启动本地应用程序 TechX 坚持将创新的科技带给世界#xff01; 拥有更好的学习体验 —— 不断努力#xff0c;不断进步#xff0c;不断探索 TechX —— 心探索、心进…内容将会持续更新有错误的地方欢迎指正谢谢! Unity 之通过自定义协议从浏览器启动本地应用程序 TechX 坚持将创新的科技带给世界 拥有更好的学习体验 —— 不断努力不断进步不断探索 TechX —— 心探索、心进取 助力快速掌握 自定义协议 启动程序 为初学者节省宝贵的学习时间避免困惑 前言 当今Web 应用程序已经成为我们日常生活和工作中不可或缺的一部分。然而有时我们可能需要从 Web 浏览器直接启动本地安装的应用程序以处理特定的任务或数据。这时候自定义协议就显得尤为重要和便捷。
自定义协议允许我们定义一种新的 URL 方案使得浏览器能够识别并直接与本地应用程序进行通信。这种技术不仅提升了用户体验还增强了 Web 应用程序与本地环境的集成能力使得用户可以更高效地完成工作任务。
在本文中我们将探讨如何设置和利用自定义协议来处理特定的 URL以便从浏览器中打开本地应用程序。我们将介绍如何注册和处理自定义协议并演示如何在浏览器中触发本地应用程序的启动以实现无缝的跨平台集成和工作流程优化。 文章目录 一、注册自定义协议二、使用自定义协议打开应用程序三、在Unity中处理自定义协议传递的参数 一、注册自定义协议 自定义协议Custom Protocol是一种在操作系统级别定义的URL协议可以让特定的URL模式触发特定的应用程序。通过自定义协议你可以在浏览器中点击一个链接然后启动一个本地应用程序。这在开发需要从网页启动本地应用的场景中非常有用比如启动Unity生成的.exe文件。
echo off
cd /d %~dp0REM echo %cd%:: 创建一个注册表文件并写入头部信息
echo Windows Registry Editor Version 5.00 regist.reg:: 创建主键 PrimaryKey用于自定义协议
echo [HKEY_CLASSES_ROOT\PrimaryKey] regist.reg:: 指定这是一个 URL 协议
echo URL Protocol regist.reg:: 设置协议的描述
echo Primary Key Protocol regist.reg:: 创建子键 DefaultIcon用于设置协议的图标
echo [HKEY_CLASSES_ROOT\PrimaryKey\DefaultIcon] regist.reg:: 使用当前目录下的 YourUnityGame.exe 作为图标
echo %cd:\\\%\\YourUnityGame.exe,1 regist.reg:: 创建子键 shell
echo [HKEY_CLASSES_ROOT\PrimaryKey\shell] regist.reg:: 创建子键 shell\open
echo [HKEY_CLASSES_ROOT\PrimaryKey\shell\open] regist.reg:: 创建子键 shell\open\command
echo [HKEY_CLASSES_ROOT\PrimaryKey\shell\open\command] regist.reg:: 设置当协议被调用时执行的命令将当前目录路径转义并将第一个参数传递给 YourUnityGame.exe
echo \%cd:\\\%\\YourUnityGame.exe\ \%%1\ regist.reg:: 静默地导入注册表文件
regedit /s regist.reg:: 删除临时生成的注册表文件
del regist.reg:: 输出注册成功的提示信息
echo 注册成功:: 暂停批处理脚本的执行等待用户按下任意键继续
pause
PrimaryKey为注册表文件中的主键可以根据你的需要自行填写
YourUnityGame为你的程序名称
创建一个批处理文件例如register_protocol.bat将上面的脚本代码粘贴进去。
将YourUnityGame.exe放在与批处理文件相同的目录中。
以管理员身份运行register_protocol.bat会自动完成协议注册。 使用命令符regedit命令打开注册表在计算机\HKEY_CLASSES_ROOT\PrimaryKey中可以查看到已经注册完成。 二、使用自定义协议打开应用程序 完成自定义协议之后你可以在浏览器中使用形如
PrimaryKey://{“param1”:“value1”,“param2”:“value2”,“param3”:“value3”}的URL来启动YourUnityGame.exe
并传递参数{“param1”:“value1”,“param2”:“value2”,“param3”:“value3”}到YourUnityGame.exe程序中
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleOpen Application with Custom Protocol/titlestylebody {display: flex;justify-content: center;align-items: center;height: 100vh;font-family: Arial, sans-serif;background-color: #f0f0f0;}button {padding: 10px 20px;font-size: 16px;cursor: pointer;background-color: #4CAF50;color: white;border: none;border-radius: 5px;box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);}button:hover {background-color: #45a049;}/style
/head
bodybutton onclickopenApp()Open YourUnityGame App/buttonscriptfunction openApp() {window.location.href PrimaryKey://{param1:value1,param2:value2,param3:value3};}/script
/body
/html点击按钮后会弹出这个窗口说明你已经成功了即将打开YourUnityGame 应用程序 三、在Unity中处理自定义协议传递的参数 当你从自定义协议中获取到参数链接后通常是一个类似于
PrimaryKey://{“param1”:“value1”,“param2”:“value2”,“param3”:“value3”} 的字符串。
接下来的关键是如何从这个字符串中提取出每个参数的值。
在Unity中可以通过使用Newtonsoft.Json 库来解析 JSON 格式的参数。
确保在 Unity 项目中导入了 Newtonsoft.Json 库你可以通过 Unity 的 Package Manager 或手动导入 DLL 文件来实现或在Packages/mainifest.json中添加com.unity.nuget.newtonsoft-json: “3.2.1”
using Newtonsoft.Json;
using System.Text.RegularExpressions;
using UnityEngine;[System.Serializable]
public class ProtocolData
{public string param1;public string param2;public string param3;
}public class ProtocolHandler : MonoBehaviour
{string protocolPattern ^(?protocol\w)://(?param\{.\})$;void Start(){// 获取启动时的参数string[] args System.Environment.GetCommandLineArgs();// 如果有参数if (args.Length 1){//PrimaryKey://{\param1\:\value1\,\param2\:\value2\,\param3\:\value3\}string protocolLink args[1];// 使用正则表达式匹配自定义协议链接Match match Regex.Match(protocolLink, protocolPattern);// 如果匹配成功if (match.Success){// 获取协议名string protocol match.Groups[protocol].Value;// 获取 {} 中的 JSON 内容string jsonContent match.Groups[param].Value;// 输出协议名和 JSON 内容方便调试Debug.Log(Protocol: protocol);Debug.Log(JSON Content: jsonContent);// 使用 Newtonsoft.Json 解析 JSONProtocolData data JsonConvert.DeserializeObjectProtocolData(jsonContent);// 现在可以访问 data 中的参数值Debug.Log(param1: data.param1);Debug.Log(param2: data.param2);Debug.Log(param3: data.param3);}else{Debug.Log(Received parameter does not match the custom protocol format.);}}}
}
Regex.Match(protocolLink, protocolPattern) 使用正则表达式匹配 protocolLink 中的自定义协议链接。
如果匹配成功 (match.Success)则从 match.Groups[“protocol”] 获取协议名称从 match.Groups[“param”] 获取 JSON 内容。
使用 JsonConvert.DeserializeObject() 方法将 JSON 内容解析为 ProtocolData 类型的对象然后可以访问其中的参数值。 TechX —— 心探索、心进取 每一次跌倒都是一次成长 每一次努力都是一次进步 END 感谢您阅读本篇博客希望这篇内容对您有所帮助。如果您有任何问题或意见或者想要了解更多关于本主题的信息欢迎在评论区留言与我交流。我会非常乐意与大家讨论和分享更多有趣的内容。 如果您喜欢本博客请点赞和分享给更多的朋友让更多人受益。同时您也可以关注我的博客以便及时获取最新的更新和文章。 在未来的写作中我将继续努力分享更多有趣、实用的内容。再次感谢大家的支持和鼓励期待与您在下一篇博客再见