{"id":21358854,"url":"https://github.com/gameframex/com.gameframex.unity.gameanalytics","last_synced_at":"2025-07-20T07:07:08.238Z","repository":{"id":232506747,"uuid":"784515131","full_name":"GameFrameX/com.gameframex.unity.gameanalytics","owner":"GameFrameX","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-30T15:51:00.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-30T22:16:45.998Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GameFrameX.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-10T02:02:27.000Z","updated_at":"2025-05-30T15:51:04.000Z","dependencies_parsed_at":"2024-04-10T04:46:29.896Z","dependency_job_id":"c0da29d2-afe2-4352-8109-67baa8425b1f","html_url":"https://github.com/GameFrameX/com.gameframex.unity.gameanalytics","commit_stats":null,"previous_names":["alianblank/com.alianblank.gameframex.unity.gameanalytics","gameframex/com.gameframex.unity.gameanalytics"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/GameFrameX/com.gameframex.unity.gameanalytics","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.gameanalytics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.gameanalytics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.gameanalytics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.gameanalytics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GameFrameX","download_url":"https://codeload.github.com/GameFrameX/com.gameframex.unity.gameanalytics/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GameFrameX%2Fcom.gameframex.unity.gameanalytics/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266081245,"owners_count":23873511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T05:22:39.737Z","updated_at":"2025-07-20T07:07:08.210Z","avatar_url":"https://github.com/GameFrameX.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿## HOMEPAGE\n\nGameFrameX 的 GameAnalytics 游戏数据分析的组件\n\n**GameAnalytics 游戏数据分析的组件 (GameAnalytics Component)** - 提供游戏开发者集成和使用游戏数据分析的功能的接口。\n\n# 使用文档(文档编写于GPT4)\n\n## 简介\n\n`GameAnalyticsComponent`是一个用于游戏数据分析的组件，它包含了不同类型的事件上报和计时器功能。该组件作为游戏框架的一部分，便于游戏开发者集成和使用游戏数据分析的功能。\n\n## 初始化\n\n在Unity的`Awake`方法中，`GameAnalyticsComponent`被初始化，并创建了一个`GameAnalyticsManager`实例。通过调用`Init`方法，完成具体的初始化过程，并设置`_isInit`标志为`true`，以确保后续的方法只在初始化之后被执行。\n\n```csharp\npublic void Init()\n{\n    _gameAnalyticsManager.Init();\n    _isInit = true;\n}\n```\n\n## 计时功能\n\n### 开始计时\n\n`StartTimer`方法允许开发者为某个事件开始计时。在事件开始时调用此方法，并传入事件名称。\n\n```csharp\npublic void StartTimer(string eventName)\n{\n    if (!_isInit)\n    {\n        return;\n    }\n\n    _gameAnalyticsManager.StartTimer(eventName);\n}\n```\n\n### 结束计时\n\n结束特定事件的计时，使用`StopTimer`方法，并传入相应的事件名称。\n\n```csharp\npublic void StopTimer(string eventName)\n{\n    if (!_isInit)\n    {\n        return;\n    }\n\n    _gameAnalyticsManager.StopTimer(eventName);\n}\n```\n\n## 事件上报\n\n### 简单事件上报\n\n用于上报不包含额外数据的简单事件。只需调用`Event`方法并传入事件名称。\n\n```csharp\npublic void Event(string eventName)\n{\n    if (!_isInit)\n    {\n        return;\n    }\n\n    _gameAnalyticsManager.Event(eventName);\n}\n```\n\n### 带数值的事件上报\n\n上报包含数值信息的事件。调用`Event`方法，并传入事件名称以及相关的数值。\n\n```csharp\npublic void Event(string eventName, float eventValue)\n{\n    if (!_isInit)\n    {\n        return;\n    }\n\n    _gameAnalyticsManager.Event(eventName, eventValue);\n}\n```\n\n### 带自定义字段的事件上报\n\n上报包含自定义字段的事件。在调用`Event`方法时传入事件名称和一个字典类型的自定义字段数据。\n\n```csharp\npublic void Event(string eventName, Dictionary\u003cstring, string\u003e customF)\n{\n    if (!_isInit)\n    {\n        return;\n    }\n\n    // 将字符串字典转换为对象字典\n    var value = new Dictionary\u003cstring, object\u003e();\n    foreach (var kv in customF)\n    {\n        value[kv.Key] = kv.Value;\n    }\n\n    _gameAnalyticsManager.Event(eventName, value);\n}\n```\n\n### 带数值和自定义字段的事件上报\n\n上报一个同时包含数值信息和自定义字段的事件，需要调用`Event`方法并传入事件名称、事件数值以及自定义字段的字典。\n\n```csharp\npublic void Event(string eventName, float eventValue, Dictionary\u003cstring, string\u003e customF)\n{\n    if (!_isInit)\n    {\n        return;\n    }\n\n    var value = new Dictionary\u003cstring, object\u003e();\n    foreach (var kv in customF)\n    {\n        value[kv.Key] = kv.Value;\n    }\n\n    _gameAnalyticsManager.Event(eventName, eventValue, value);\n}\n```\n\n## 使用事项\n\n- 请确保在使用组件的任何方法之前，组件已被正确初始化。\n- 若`_isInit`为`false`，则不进行任何操作，确保了只有在组件初始化后事件上报或计时才有效作用。\n- 上报的事件名称应该具有代表性和唯一性，以确保数据分析的准确性。\n\n## 集成提示\n\n- 工程中应引入命名空间`GameFrameX.GameAnalytics.Runtime`。\n- 确保`GameAnalyticsManager`被正确实例化，并已经通过`GameFramework`注册。\n- 对于自定义字段，使用`Dictionary\u003cstring, string\u003e`类型保持键值对的数据结构。\n\n# 使用方式(任选其一)\n\n1. 直接在 `manifest.json` 的文件中的 `dependencies` 节点下添加以下内容\n   ```json\n      {\"com.gameframex.unity.gameanalytics\": \"https://github.com/AlianBlank/com.gameframex.unity.gameanalytics.git\"}\n    ```\n2. 在Unity 的`Packages Manager` 中使用`Git URL` 的方式添加库,地址为：https://github.com/AlianBlank/com.gameframex.unity.gameanalytics.git\n\n3. 直接下载仓库放置到Unity 项目的`Packages` 目录下。会自动加载识别","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgameframex%2Fcom.gameframex.unity.gameanalytics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgameframex%2Fcom.gameframex.unity.gameanalytics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgameframex%2Fcom.gameframex.unity.gameanalytics/lists"}