1)从deltaDNA Unity SDK文件页面下载最新的SDK。
2)通过在Unity选择 资源(Assets)->导入包(Import Package)->定制包(Custom Package)菜单项并选择你在前一步下载的SDK文件将这个SDK以一个新的定制包导入到你的Unity项目。当提示时导入这个SDK包中所有的文件。
3)除了SDK源码,一个deltaDNA示例场景和脚本还将被添加到你的项目。如果你想要查看这个示例场景和其使用的所有源码,在Unity项目浏览器中跳转到 DeltaDNA \ Example文件夹。如果你不需要它们,这个示例文件夹和文件可以被移除。
4)为了从你的游戏开始向deltaDNA发送事件,你需要一些将指向数据源自的哪个游戏的初始化参数来启用这个SDK。这些初始化的详细信息可以从deltaDNA中你的“游戏详情”中找到,你还可以在“游戏详情”页面你的开发(DEV)环境右边通过点击Unity按钮下载一个包含你的游戏初始化参数的预先配置好的代码片段。这个代码片段可以粘贴到你的Unity游戏脚本中。
本教程的目的。
- 在你的场景中创建一个新的空白游戏对象
- 将一个名为deltaDNA的新C#脚本添加到其中
- 打开这个新的deltaDNA 脚本并将网站上的代码片段粘贴到其中,取代那里已有的所有代码。
- 重命名代码片段中的类使其匹配脚本中的deltaDNA 文件名
- 在
StartSDK()方法前添加下面两行,以打开控制面板调试和设置将在你的游戏每次启动时被记录的游戏客户端版本。
123// 在此处输入额外的配置DDNA.Instance.Settings.DebugMode = true;DDNA.Instance.ClientVersion = "1.0.0";
现在,当你运行你的游戏时,其将启动deltaDNA SDK并自动发送第一条简单的事件。
- newPlayer(新玩家)。这个事件记录了游戏安装以后的第一次运行。
- gameStarted(启动游戏)。这个事件在游戏每次运行时被记录。其被用于跟踪玩家的会话和玩家正在玩的游戏版本。
- clientDevice(客户端设备)。这个事件也在游戏每次运行时被记录。其被用于跟踪玩家正在使用的设备类型。
这三个事件被SDK自动的记录。可以禁用这个自动的行为以扩展含有额外自定义参数的事件,并由你手工记录它们。要做到这一点请在启动SDK前设置如下的配置标志位。
1 2 3 4 |
// 如果要扩展含有自定义参数的事件时禁用自动事件。 DDNA.Instance.Settings.OnFirstRunSendNewPlayerEvent = false; DDNA.Instance.Settings.OnInitSendGameStartedEvent = false; DDNA.Instance.Settings.OnInitSendClientDeviceEvent = false; |
你的前三个自动事件将在SDK启动时被立刻上传到deltaDNA。SDK将尝试每隔一分钟有规律的上传你在你的代码中记录的随后的事件。如果你想要自己控制它们的时机,自动上传行为和它的频率可以被覆盖。查看 DDNA.Instance.Settings BackgroundEventUpload...属性以了解更多信息。
除了自动的事件,你可以在你游戏的任何时候记录你自己的自定义事件或者标准模板事件。其将被缓存在本地直至你使用 DDNA.Instance.Upload();方法调用事件或者自动事件上传工具运行时。使用 DDNA.Instance.RecordEvent()方法记录事件并设置其参数。
1 2 3 4 5 |
GameEvent ev = new GameEvent("options") .AddParam("option", "sword") .AddParam("action", "sell"); DDNA.Instance.RecordEvent(ev); |
还有一些有用的帮助方法可以帮助你创建在奖励或者交易中使用的更加复杂的数据结构。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
GameEvent lv = new GameEvent("levelUp") .AddParam("userLevel", 12) .AddParam("userXP", 240) .AddParam("reward", new Params() .AddParam("rewardName", "Level 12 Reward") .AddParam("rewardProducts", new Product() .AddVirtualCurrency("Gold", "PREMIUM", 100) .AddItem("Golden Battle Axe", "Weapon", 1))) .AddParam("levelUpName", "Level 12") .AddParam("goldBalance", 5100) .AddParam("manaBalance", 4) .AddParam("mapsOwned", 7) .AddParam("userSkill", 4) .AddParam("userTitle", "COMMON"); DDNA.Instance.RecordEvent(lv); |
你的事件将被以一个在POST(发送)正文中的包含事件数组JSON文件的HTTP POST上传到deltaDNA。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
{ "eventList": [ { "eventName": "newPlayer", "userID": "2b55f708-5b37-4af3-b894-5d1eea3baecb", "sessionID": "8f8ed92e-6c58-4b45-beb7-5c3aa70f346d", "eventTimestamp": "2015-09-01 16:17:54.295", "eventParams": { "platform": "PC_CLIENT", "sdkVersion": "Unity SDK v3.6.1" } }, { "eventName": "gameStarted", "userID": "2b55f708-5b37-4af3-b894-5d1eea3baecb", "sessionID": "8f8ed92e-6c58-4b45-beb7-5c3aa70f346d", "eventTimestamp": "2015-09-01 16:17:54.309", "eventParams": { "clientVersion": "1.0.0", "userLocale": "en_ZZ", "platform": "PC_CLIENT", "sdkVersion": "Unity SDK v3.6.1" } }, { "eventName": "clientDevice", "userID": "2b55f708-5b37-4af3-b894-5d1eea3baecb", "sessionID": "8f8ed92e-6c58-4b45-beb7-5c3aa70f346d", "eventTimestamp": "2015-09-01 16:17:54.318", "eventParams": { "deviceName": "AMD Athlon(tm) II X4 630 Processor (4096 MB)", "deviceType": "PC", "hardwareVersion": "AMD Athlon(tm) II X4 630 Processor (4096 MB)", "operatingSystem": "WINDOWS", "operatingSystemVersion": "8.1", "timezoneOffset": "+01", "userLanguage": "en", "platform": "PC_CLIENT", "sdkVersion": "Unity SDK v3.6.1" } } ] } |
你可以使用在设置(SETUP)菜单中的“事件浏览器”工具来查看你的最近的有效的和无效的事件、检查数据和审阅错误报告。这将帮助你在发布你的事件格式到实际(LIVE)环境前识别和修复错误。deltaDNA保证对你的事件有严格的事件确认以防止你的数据损害。当你的游戏被添加到deltaDNA时,大约10条使用标准测量控制面板生成的标准事件被添加到事件格式。如果你想要使用更多的参数扩展这些事件或者添加新的事件,你应当使用事件管理(Event Management)工具来在将其发布到实际(LIVE)环境前指定事件格式和事件浏览器以测试你的事件。
最后,当你实施你的所有事件并确认其工作正确时你应当使用你的开发(DEV)环境中事件管理员(Event Manager)的发布按钮来将其发布到实际(LIVE)环境。这时你可以将你的SDK启动代码中的环境ID(environmentID)改变为实际(LIVE)的环境ID(environmentID),并将你的游戏提交到APP(应用)商店。
请注意:非常重要的一点是你只能将实际产生的数据流发送到你的实际(LIVE)环境,且只能将开发和QA数据发送到你的开发(DEV)环境。在你的“游戏详情”页面有每个环境的唯一环境键值,其应当被用于你的SDK启用(Start)方法中以决定你的事件应当被发送到哪个环境。