日志服务接入方式之Unity 3D篇

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
对象存储 OSS,内容安全 1000次 1年
简介: 通过Web Tracking功能非常方便的收集Unity 3D的日志,这篇文章将以收集Unity Debug.Log为例,讲解如何将Unity日志收集到日志服务中。

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
日志服务前不久推出了Web Tracking功能,您可以通过Web Tracking功能非常方便的收集Unity 3D的日志,下面以收集Unity Debug.Log为例,讲解如何将Unity日志收集到日志服务中。

step 1: 开通Web Tracking功能。

开通方法请参考另外一篇文章:日志服务Tracking功能

step 2: 注册Unity3D LogHandler。

在Unity editor中创建c#文件LogOutputHandler.cs,并将下面的代码拷贝进去,修改其中的三个成员变量,分别是日志项目的名称project,日志库的名字logstore,日志项目的地址serviceAddr,serviceAddr可以从日志服务官方文档中找到。

using UnityEngine;
using System.Collections;

public class LogOutputHandler : MonoBehaviour
{

    //Register the HandleLog function on scene start to fire on debug.log events
    public void OnEnable()
    {
        Application.logMessageReceived += HandleLog;
    }

    //Remove callback when object goes out of scope
    public void OnDisable()
    {
        Application.logMessageReceived -= HandleLog;
    }

    string project = "your project name";
    string logstore = "your logstore name";
    string serviceAddr = "http address of your log service project";

    //Capture debug.log output, send logs to Loggly
    public void HandleLog(string logString, string stackTrace, LogType type)
    {
        string parameters = "";
        parameters += "Level=" + WWW.EscapeURL(type.ToString());
        parameters += "&";
        parameters += "Message=" + WWW.EscapeURL(logString);
        parameters += "&";
        parameters += "Stack_Trace=" + WWW.EscapeURL(stackTrace);
        parameters += "&";
        //Add any User, Game, or Device MetaData that would be useful to finding issues later
        parameters += "Device_Model=" + WWW.EscapeURL(SystemInfo.deviceModel);

        string url = "http://" + project + "." + serviceAddr + "/logstores/" + logstore + "/track?APIVersion=0.6.0&" + parameters;
        StartCoroutine(SendData(url));
    }

    public IEnumerator SendData(string url)
    {
        WWW sendLog = new WWW(url);
        yield return sendLog;
    }
}

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

step 3:产生Unity日志。

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

using UnityEngine;
using System.Collections;

public class LogglyTest : MonoBehaviour {

    void Start () {
        Debug.Log ("Hello world");
    }
}

step 4: 到日志服务控制台查看。

上述步骤做完之后,运行Unity程序,就可以在日志服务的控制台看到您发送的日志了。

总结

上面的例子中给出了Debug.Log或者类似的比如Debug.LogError、Debug.LogException日志的收集方法,Unity的组件对象模型以及其提供的程序崩溃API、其他各种LOG API使得可以非常方便的收集客户端的设备信息,这些我将会在接下来的文章中介绍。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
人工智能 图形学
【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏2(附项目源码)
【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏2(附项目源码)
95 1
【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏2(附项目源码)
|
6月前
|
图形学 索引
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码)
131 2
|
6月前
|
人工智能 图形学
【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏1(附项目源码)
【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏1(附项目源码)
94 2
|
6月前
|
Rust 图形学
【unity实战】使用unity制作一个类似Rust的3D生存建造建筑系统,具有很好的吸附性(附项目源码)
【unity实战】使用unity制作一个类似Rust的3D生存建造建筑系统,具有很好的吸附性(附项目源码)
164 1
|
6月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱10(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱10(附带项目源码)
69 1
|
6月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱8(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱8(附带项目源码)
53 1
|
6月前
|
Go 图形学
【Unity小技巧】3D人物移动脚步和跳跃下落音效控制
【Unity小技巧】3D人物移动脚步和跳跃下落音效控制
78 1
|
6月前
|
存储 图形学
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
166 0
|
6月前
|
图形学
【推荐100个unity插件之19】武器拖尾特效插件——Pocket RPG Weapon Trails(2d 3d通用)
【推荐100个unity插件之19】武器拖尾特效插件——Pocket RPG Weapon Trails(2d 3d通用)
133 0
|
6月前
|
图形学
【unity实战】3D水系统,游泳,潜水,钓鱼功能实现
【unity实战】3D水系统,游泳,潜水,钓鱼功能实现
199 0

相关产品

  • 日志服务