为啥没有创建 IRtcEngine 实例?
Posted
技术标签:
【中文标题】为啥没有创建 IRtcEngine 实例?【英文标题】:Why the IRtcEngine instance is not created?为什么没有创建 IRtcEngine 实例? 【发布时间】:2021-05-06 23:21:20 【问题描述】:我正在尝试使用 agora.io 在我的 Unity 游戏中实现语音聊天。我遵循官方启动教程,并将下面的代码放在附加到场景中空游戏对象的脚本中: My simple start up script
因此,在开始时,应该在调用 IRtcEngine.GetEngine(agoraAppID) 方法时创建 IRtcEngine 实例。问题是,这个方法不是返回实例,而是打印错误日志:“创建引擎失败,错误代码:-7”
我查看了错误代码7的含义:“在RtcEngine初始化之前调用了一个方法。确保在调用该方法之前创建并初始化了RtcEngineinstance”。 所以我尝试评论除了调用 IRtcEngine.GetEngine(agoraAppID) 方法的行之外的所有内容,但错误仍然弹出。即使在我播放 agora 演示场景“HelloUnity”时它也会弹出。
我还尝试删除 agora 包并再次导入它。它起作用了,因为之后实例被正确创建,但几次之后,错误又开始弹出。
Unity 版本:2020.3.3f1
Agora 版本:3.3.1.71
可能是什么问题?是bug吗?
【问题讨论】:
【参考方案1】:应该看起来像这样。不要忘记顶部的变量声明。
public class Launch : MonoBehaviour
public IRtcEngine mRtcEngine;
void Start()
string agoraAccountId = "4ca78bc86f23hhhhhhhhh4444444444";
if (mRtcEngine != null)
Debug.Log("Agora engine exists already!!");
return;
mRtcEngine = IRtcEngine.GetEngine(agoraAccountId);
我建议你加入 Agora slack 频道(很容易加入),在那里你可以快速得到答案。
【讨论】:
【参考方案2】:请查看演示项目代码并注意示例应用如何处理 Unity 中的生命周期。在您的简单脚本中,销毁时没有清理代码。您在系统上打开了某些套接字/端口。这就是为什么当您在全新安装中获得一些成功但在随后的运行中没有成功的原因。
【讨论】:
【参考方案3】:我遇到了相同的错误代码相同的问题。关闭所有 Unity 实例并重新启动计算机对我有帮助。
通常,如果您没有正确离开频道,就会发生这种情况。所以,把
rtcEngine?.LeaveChannel()
到
OnDestroy()
可能是一个很好的解决方案。
【讨论】:
以上是关于为啥没有创建 IRtcEngine 实例?的主要内容,如果未能解决你的问题,请参考以下文章
Terraform Autoscaling Group - 为啥没有启动任何实例?
oracle SQL*PLUS在创建数据库时为啥会提示数据库已装载