# Didabu
# Installtion

修改Packages目录下的manifest.json文件，增加scopedRegistries节（如果没有的话），然后增加以下仓库配置：

```json
  "scopedRegistries": [
    {
      "name": "npmjs",
      "url": "https://registry.npmjs.org",
      "scopes": [
        "com.onesignal",
        "com.modesttree.zenject",
        "com.applovin.max.unity",
        "com.mogafa",
        "com.didabu",
        "com.bugly.unity",
        "com.facebook.unity"
      ]
    }
  ]
```
在dependencies下添加：

开发环境（Github）
```json
    "com.didabu.core.unity": "ssh://git@github.com/didabu/unity-core.git#upm_dev",
```
开发环境（aliyun）
```json
    "com.didabu.core.unity": "ssh://git@code.aliyun.com/didabu/unity-core.git#upm_dev",
```
正式环境
```json
    "com.didabu.core.unity": "0.2.2",
```
# 初始化
在网站创建App后，设置好参数，然后下载参数json文件，放置到Resources中（如果更新App版本时，最好同时更新json文件），调用Didabu.Application.Init方法初始化Didabu：
```csharp
Didabu.Application.Init("YOUR_DIDABU_APP_ID","YOUR_APP_DEV_KEY");
```
## 沙箱环境
开发过程中设置沙箱环境为true，正式环境设置为false：
```csharp
//开发环境
Didabu.Application.IsSandbox = true;
//正式环境
Didabu.Application.IsSandbox = false;
```
## 日志等级
```csharp
//设置日志级别
Didabu.Application.LogLevel = LogLevel.Debug;
//获取日志组件
var logger = IocContainer.Resolve<ILogger>();
logger.LogDebug("Test log.");
```
或者继承自MogafaBase（MogafaMonoBehaviourBase），可以在类中直接使用Logger来记录日志
```csharp
public class TestClass : MogafaBase //MogafaMonoBehaviourBase
{
    public void TestMethod()
    {
        Logger.LogDebug("Enter TestMethod.");
    }
    public async void SaveDataTest()
    {
        await LocalStorage.SetString("testname1", "testvalue");
        await LocalStorage.SetInt("testname2", 100);
        await LocalStorage.SetLong("testname3", 1000L);
        await LocalStorage.SetFloat("testname4", 0.01f);
    }
}
```
## 选择HttpClient
Didabu提供两种内置的HttpClient供选择，一种是.net提供的HttpClient，另外一种是Unity提供WebRequest，通过以下方式来选择：
```csharp
//选择.net提供的HttpClient
Didabu.Application.UseDefaultHttpClient();

//选择unity的WebRequest
Didabu.Application.UseUnityWebRequestHttpClient();
```
# Features
## 资产操作
```csharp
var assetCode = "0301";

//增加资产
Didabu.Application.AddAsset(assetCode, 500);
//减少资产
Didabu.Application.SubAsset(assetCode, 100);
//获取资产
var assetValue = Didabu.Application.GetAsset(assetCode);
//获取资产排行榜

```
## 用户行为操作
```csharp
var behaviourCode = "7001";
//记录用户行为次数
var times = await Didabu.Application.AddBehaviour(behaviourCode, 1);
//获取用户行为次数
var behaviourCode = await Didabu.Application.GetBehaviour(behaviourCode);
```
## App数据操作
```csharp
var appDataCode = "5001";
//记录app数据
Didabu.Application.SetAppData(appDataCode, "00:02.635");
//获取app数据
var appData = Didabu.Application.GetAppData(appDataCode);
//获取app数据的排行榜
List<AppDataLeaderboardDto> leaderboards = await Didabu.Application.GetAppDataLeaderboard(appDataCode);
//倒序获取app数据排行榜
leaderboards = await Didabu.Application.GetAppDataLeaderboard(appDataCode, true);
```

## AB分组操作
```csharp
if(Didabu.Application.IsAbGroup("ABGroup", "A"))
{
    //如果ABGroup分组为A，则作相应处理
}
```