MegaBlock_Basic¶
注意
该页面内容尚未更新,将于近期更新。SDK功能完整,请积极探索使用。
演示如何使用Mega的基本功能,通过工具导入Block,摆放3D内容,并最终运行查看跟踪效果。
配置和运行¶
请参考 Mega Unity样例使用说明 进行配置和运行。
运行效果
用法¶
详解¶
这个sample可以是无代码的,但通常不推荐。脚本中的代码只有一个作用:针对特定的系统状态对终端用户进行提示。
场景是如何创建的?¶
Mega Unity从零创建可运行的工程-创建EasyAR Mega场景 这一小结的内容介绍了场景中EasyAR相关功能的创建。
3D模型在哪里?¶
场景中并未提供3D模型。如果不自己创建或添加模型,运行时将只显示相机画面。你需要根据 Mega Unity样例使用说明 的描述,比照工具导入的Block在需要的地方摆放3D模型。
诊断信息是什么?¶
运行时你会发现定位信息是不断更新的,这也意味着运行时应用是不断与服务器进行通信的。这是Mega得以运行的基础,一般情况下你不应该关闭这个连接,使用过程中断开与服务器的连接将极大的影响Mega的效果。
在开发中展示并关注诊断信息是极其有帮助的,它将帮你了解系统的基本运行情况,也能在反馈问题的时候与EasyAR团队建立有效沟通。
重要
请仔细阅读 弹出消息处理及错误围栏 以及 会话状态显示及转储 ,仔细斟酌在开发阶段、测试阶段、应用上线之后应该采取何种配置,以及保留何种控制开关。请注意,与EasyAR的沟通通常需要提供这些信息,建议多利用而不是立马关闭。
需要合理处理的正常服务状态¶
这个sample展示了应该如何获取服务状态变化并合理处理。
获取状态变化信息
megaTracker.LocalizationUpdate += (response) =>
{
HandleLocalizationStatusChange(response.Status);
};
这个信息是Mega定位服务返回的数据,它并不是每帧更新的,但可以反映服务器的连接情况、定位成功与否等。
处理特定状态变化,提示终端用户
if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
{
if (!MsgBox.activeSelf)
{
MsgBox.SetActive(true);
}
var text = MsgBox.GetComponentInChildren<Text>();
text.text = "Message for developer:" + Environment.NewLine +
"QPS limit exceeded, you can keep random user fail (overall worse tracking quality) or pay for more QPS." + Environment.NewLine +
"QPS超限,你可以保持随机用户失败(总体跟踪质量下降)或付费提升QPS上限。" + Environment.NewLine +
Environment.NewLine +
"Message for user:" + Environment.NewLine +
"Too many users, please wait patiently." + Environment.NewLine +
"用户过多,请耐心等待。";
}
else if (status == MegaTrackerLocalizationStatus.WakingUp)
{
if (!MsgBox.activeSelf)
{
MsgBox.SetActive(true);
}
var text = MsgBox.GetComponentInChildren<Text>();
text.text = "Message for developer:" + Environment.NewLine +
"Service is waking up, you need to let user wait." + Environment.NewLine +
"服务正在唤醒中,你需要让用户等待。" + Environment.NewLine +
Environment.NewLine +
"Message for user:" + Environment.NewLine +
"Service is waking up, please wait patiently." + Environment.NewLine +
"服务正在唤醒中,请耐心等待。";
}
你需要对QpsLimitExceeded和WakingUp两个状态进行处理,并以合适的方式向终端用户进行提示。sample中的文字是一个参考。
QpsLimitExceeded
如果遇到这个状态,通常来说就是访问服务的设备过多。EasyAR Mega服务是按Qps收费的,需要注意这个数值并不是并发,通常来讲如果按默认配置,设备请求是1FPS,这时Qps数值恰巧与设备并发量相当。由于网络访问存在波动,在设备总数接近上限但未达到上限时出现这个状态也非常正常。
如果有设备出现这个状态,该设备的跟踪效果将受到一定影响,如果持续收到该状态,跟踪将完全由设备进行,效果将大打折扣。
如果有设备出现这个状态,访问服务的其它设备也可能会出现同样的状态,具体设备和出现时间是完全随机的,可以不严谨地类比抢票过程。
Qps超限时服务质量是受保证的,但设备上的跟踪效果不受保证,你需要购买更多Qps以支撑应用使用。如果需要短期提高Qps支持(超过50),需要至少提前 两个工作日
与EasyAR商务沟通并报备。
在Qps超限时,建议提醒用户访问人数过多,建议错峰使用等。
WakingUp
如果长时间(不同服务有所不同,试用期间时间间隔更短)没有请求服务,在恢复请求后有时会出现这个状态,大部分情况下下一个请求就会正常,通常不会超过数秒。
如果出现这个状态,可以让用户等待短暂时间。
开关MegaBlockTracker¶
MegaBlockTrackerFrameFilter.enabled 可以控制MegaBlockTracker的开关。关闭之后跟踪就停止了,Block会收到丢失信号。如果这时候强制显示内容,会发现内容贴屏。sample中是通过按钮的事件实现的,
MegaBlockTrackerFrameFilter 还有与云服务连接(定位)的开关,如有需要可以根据接口文档说明来使用。一般情况下你不应该关闭定位,使用过程中断开与服务器的连接将极大的影响Mega的效果。