全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
日志服务

Unity 3D

更新时间:2017-10-26 15:02:57

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

日志服务支持Web Tracking功能,您可以通过Web Tracking功能非常方便的收集Unity 3D的日志,本文档以收集Unity Debug.Log 为例,说明如何通过Web Tracking功能将Unity日志收集到日志服务中。

1 开通 Web Tracking 功能

开通方法请参考日志服务 Tracking 功能

2 注册 Unity3D LogHandler

在Unity editor中创建C#文件 LogOutputHandler.cs,输入以下代码,并修改其中的三个成员变量,分别为:

  • project,表示日志项目名称

  • logstore,表示日志库名称

  • serviceAddr,表示日志项目的地址

    serviceAddr请参考服务入口

  1. using UnityEngine;
  2. using System.Collections;
  3. public class LogOutputHandler : MonoBehaviour
  4. {
  5. //Register the HandleLog function on scene start to fire on debug.log events
  6. public void OnEnable()
  7. {
  8. Application.logMessageReceived += HandleLog;
  9. }
  10. //Remove callback when object goes out of scope
  11. public void OnDisable()
  12. {
  13. Application.logMessageReceived -= HandleLog;
  14. }
  15. string project = "your project name";
  16. string logstore = "your logstore name";
  17. string serviceAddr = "http address of your log service project";
  18. //Capture debug.log output, send logs to Loggly
  19. public void HandleLog(string logString, string stackTrace, LogType type)
  20. {
  21. string parameters = "";
  22. parameters += "Level=" + WWW.EscapeURL(type.ToString());
  23. parameters += "&";
  24. parameters += "Message=" + WWW.EscapeURL(logString);
  25. parameters += "&";
  26. parameters += "Stack_Trace=" + WWW.EscapeURL(stackTrace);
  27. parameters += "&";
  28. //Add any User, Game, or Device MetaData that would be useful to finding issues later
  29. parameters += "Device_Model=" + WWW.EscapeURL(SystemInfo.deviceModel);
  30. string url = "http://" + project + "." + serviceAddr + "/logstores/" + logstore + "/track?APIVersion=0.6.0&" + parameters;
  31. StartCoroutine(SendData(url));
  32. }
  33. public IEnumerator SendData(string url)
  34. {
  35. WWW sendLog = new WWW(url);
  36. yield return sendLog;
  37. }
  38. }

以上代码可以异步的将日志发送到阿里云日志服务中,在示例中您可以添加更多想要收集的字段。

3 产生Unity日志

在工程中创建 LogglyTest.cs 文件,并加入下面的代码:

  1. using UnityEngine;
  2. using System.Collections;
  3. public class LogglyTest : MonoBehaviour {
  4. void Start () {
  5. Debug.Log ("Hello world");
  6. }
  7. }

4 在控制台预览日志

上述步骤做完之后,运行Unity程序,就可以在 日志服务控制台 预览您发送的日志了。如何预览日志请参考日志预览

以上示例提供了 Debug.Log 或者Debug.LogErrorDebug.LogException 等类似日志的收集方法。Unity的组件对象模型及其提供的程序崩溃API、其他各种LOG API使您可以非常方便的收集客户端的设备信息。

本文导读目录