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

在 Unity 中调用腾讯云机器翻译

        在游戏开发中,常常需要对文本进行翻译。在游戏开发的前期,通常就是对配置表进行机翻,调用各种大模型机器翻译进行操作。

        本文主要介绍如何通过 C# 代码来调用腾讯云的文本翻译功能,并介绍一个在 Unity 中实现的示例。这样能方便地让我们以后能通过代码批量调用,提高工作效率。

        注意:整个解决方案我只测试了编辑器,没有测试运行时。运行时是否可用暂不清楚。

1、SDK 接入

        首先去腾讯云服务的官网下载SDK:https://cloud.tencent.com/document/sdk

        因为我们这里是接入 Unity ,所以下载 .Net 版本。下面两个一个是 GitHub 仓库,一个是 Gitee 仓库,东西都是一样的,按照各位的喜好下载即可。

  • https://github.com/TencentCloud/tencentcloud-sdk-dotnet
  • https://gitee.com/tencentcloud/tencentcloud-sdk-dotnet

        之后我们准备将其接入 Unity。在接入腾讯云的 SDK 之前,我们需要先下载一个newtonsoft.json.dll包,这个应该是 .Net 框架自带的,但是 Unity 没有内置,所以需要我们自己加进来。这里大家自己去网上找资源就行,我用的是这个:https://cn.dll-files.com/newtonsoft.json.dll.html 。

        然后我们导入腾讯云的文本翻译部分,首先我们之前下载下来的仓库,里面是C#源代码,我们不是所有的都用,只需要载入部分即可,只需要如下两个文件夹的东西:

  • ...\tencentcloud-sdk-dotnet\TencentCloud\Common

  • ...\tencentcloud-sdk-dotnet\TencentCloud\Tmt

        把这两个文件夹直接拷贝到我们的 Unity 工程,即完成了 SDK 的接入。

        如上图所示,确保引入了上面三个东西。

2、参数获取

        这里需要获取腾讯云的一些参数,主要是 SecretId、SecretKey 以及 ProjectID 这三个东西,这些都可以在控制台申请到。

  • 用于管理:https://console.cloud.tencent.com/cam

  • 管理项目:https://console.cloud.tencent.com/project

        注意,SecretId、SecretKey 只在创建用户时候能看到一次,一定要注意保存。

3、API 调用

        直接上代码:

/// <summary>
/// 腾讯云翻译器
/// https://cloud.tencent.com/document/product/551/15612
/// </summary>
public class TencentTranslator : ScriptableObject
{[Title("参数配置")]public string secretId = "";public string secretKey = "";public string Region = "ap-chengdu"; // 根据实际选择地域private TmtClient m_Client;public TextTranslateRequest m_Req = new TextTranslateRequest();[LabelText("源语言")]public string Source = "zh";[LabelText("目标语言")]public string Target = "en";[LabelText("项目ID")]public int ProjectId;public void Init(){var credential = new Credential();credential.SecretId = secretId;credential.SecretKey = secretKey;m_Client = new TmtClient(credential, Region);m_Req.Target = Target;m_Req.Source = Source;m_Req.ProjectId = ProjectId;Debug.Log($"TencentTranslator 初始化完成:{ProjectId}");}/// <summary>/// 翻译的频率,这个需要查看官方文档;/// 目前我看到的限制是每秒5次;/// </summary>[LabelText("每秒翻译数量")]public int TranslateRate = 5;public async Task<string> Translate(string context){if (m_Client == null)Init();try{m_Req.SourceText = context;long scecond = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();var rsp = await m_Client.TextTranslate(m_Req);long offset = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() - scecond;Debug.Log($"【腾讯云翻译】{context}\n翻译结果:{rsp.TargetText}\nAPI 调用耗时:{offset} ms");var delayTime = (int)math.max(0, (long)((1.0f / TranslateRate) * 1000) - offset);if (delayTime > 0)await System.Threading.Tasks.Task.Delay(delayTime);return rsp.TargetText;}catch (Exception ex){Debug.LogException(ex);return string.Empty;}}[Title("测试")][Space][ShowInInspector, LabelText("测试翻译")]private string TextContext = "你需要我翻译什么?";[Button("翻译测试")]public void TestTranslate(){if (ProjectId == 0){Debug.LogError("项目ID必填!");return;}if (m_Client == null)Init();Translate(TextContext);}}

        非常简单,之后我们直接在 Unity 里就能用了:

http://www.xdnf.cn/news/19686.html

相关文章:

  • 一个好的智能体框架应该是什么样子
  • Activiti流程引擎的用户体系与MIS系统的用户体系打通
  • 一、Git与Gitee常见问题解答
  • 深度学习跨领域应用探索:从技术落地到行业变革
  • pcl案例2 叶片与根茎的分离step2
  • MyBatis 性能优化最佳实践:从 SQL 到连接池的全面调优指南
  • Java网络编程基础 Socket通信入门指南
  • 机器视觉软件--VisionPro、Visual Master,Halcon 和 OpenCV 的学习路线
  • 从零开始学习n8n-定时器+HTTP+飞书多维表格(上)
  • UFUNCTION C++ 的再次理解
  • 产品月报|睿本云8月产品功能迭代
  • AWS:AssumeRole背后真正的安全哲学,不仅是迂回
  • 综合实验:DHCP、VLAN、NAT、BDF、策略路由等
  • K8S 知识框架和命令操作
  • Linux按键输入实验
  • MongoDB 内存管理:WiredTiger 引擎原理与配置优化
  • 实战练习:通过HTTP请求节点的POST方法用API创建智能体 JSON序列化节点
  • Java学习笔记-反射(二)
  • 使用ansible的playbook完成以下操作
  • Centos安装unoconv文档转换工具并在PHP中使用phpword替换word模板中的变量后,使用unoconv将word转换成pdf
  • 高效浏览器标签页管理:Chrome扩展开发完全指南
  • 三、数据结构
  • 【vue eslint】报错:VSCode自动保存格式化与ESLint规则冲突
  • Linux 正则表达式与grep命令
  • 【Excel】将一个单元格内​​的多行文本,​​拆分成多个单元格,每个单元格一行​​
  • ApiFox的使用
  • AP生物课程:全面解析与优质培训机构推荐
  • 力扣每日一刷Day 19
  • 复杂计算任务的智能轮询优化实战
  • Agentless:革命性的无代理软件工程方案