# unity-封装接入指南

---

本文档是对 Unity 引擎游戏如何接入 4399 SDK 的说明   
<span style="color:red">**所用示例使用的游戏引擎是 Unity 2018.4.36f1, 不同版本注意兼容问题**</span>

下载 [unity封装示例](https://sdkftp.4399doc.com/external/operate/3.19/operate-unity-3.19.0+722.zip) ，解压得到如下结构

```
.
└── Assets
    ├── Plugins
    │   └── Editor
    └── Scripts
        ├── cn
        └── EaUnityDemo.cs
```

简单说明`Assets`目录下的文件
- `Assets/Plugins/Editor/**/*.cs`：一些插件，主要用于修改依赖、游戏Activity配置、渠道标识等
- `Assets/Scripts/cn/**/*.cs`：对 java 接口的封装
- `Assets/Scripts/EaUnitDemo.cs`：接口调用示例


## 引入 SDK 

### 引入依赖

将`Assets`目录下的文件拷贝到游戏项目对应位置
- `Assets/Plugins/Editor/cn/**/*.cs`
- `Assets/Scripts/cn/**/*.cs`   

### 修改版本
当 SDK 接口不变时，一般只需要提升版本即可  

在`Assets/Plugins/Editor/cn/m4399/operate/OperateGradleDependencies.cs`中
```c#
namespace cn.m4399.operate
{
    public class OperateGradleDependencies : AndroidGradleDependencies
    {
        override public int callbackOrder => 101;

        override public List<string> Dependencies()
        {
            var dependencies = new List<string>
            {
                "com.android.volley:volley:1.2.1",
                "com.android.support:support-v4:28.0.0",
                "cn.m4399.sdk:operate:3.19.0"
            };
            return dependencies;
        }
    }
}
```
将`3.19.0`修改为最新即可。

### 按游戏修改
- `Assets/Plugins/Editor/cn/m4399/operate/DemoAndroidManifestLaunchModeSingleTop.cs`   
  - 自定义文件名和类名
  - 修改`ActivityClass()`方法，返回游戏主`Activity`，例如:`com.unity3d.player.UnityPlayerActivity`
- `Assets/Plugins/Editor/cn/m4399/operate/OperateChannelId4399.cs`
  - 自定义文件名和类名
  - 修改`ChannelId()`方法，返回实际的渠道标识

## 接口调用
参考调用示例`EaUnitDemo.cs`中的用法  
接口更具体说明参考 java  接入指南

## 注意事项

### 游戏黑屏
若游戏打开了 SDK 的个人中心或其他非全屏页面，再返回游戏，游戏画面出现黑屏，直到关闭 SDK 页面  
可调用以下方法尝试修复：

```c#
FixBlackScreenHelper.FixBlackScreen();
```
**警告：该方法可能存在风险，开发者使用时应当充分测试**
