yyl
2026-05-11 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96
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
44
45
46
47
48
49
50
using UnityEngine;
using LitJson;
using System;
 
/// <summary>
/// SDK平台实现的抽象基类。
/// 每个目标平台(Android、WebGL等)继承此类并实现各自的逻辑。
/// SDKUtils持有一个SDKBaseImpl实例,所有平台差异均通过此基类委托。
/// </summary>
public abstract class SDKBaseImpl
{
    protected readonly SDKUtils utils;
 
    protected SDKBaseImpl(SDKUtils utils)
    {
        this.utils = utils;
    }
 
    // -------------------------------------------------------
    // 必须由子类实现的平台核心方法
    // -------------------------------------------------------
 
    /// <summary>向平台原生SDK发送JSON消息</summary>
    public abstract void SendToNative(string jsonStr);
 
    /// <summary>平台初始化(检查内置资源拷贝状态、平台特有设置等)</summary>
    public abstract void InitPlatform();
 
    /// <summary>触发SDK账号登录流程</summary>
    public abstract void FreePlatformLogin();
 
    /// <summary>填充平台特有的设备信息字段(如Android的mac/imei等)</summary>
    public abstract void FillDeviceInfo(JsonData json);
 
    /// <summary>退出游戏(各平台行为不同)</summary>
    public abstract void ExitGame();
 
    // -------------------------------------------------------
    // 可选重写(默认空实现,仅Android等平台需要)
    // -------------------------------------------------------
 
    /// <summary>同步客户端包ID到原生SDK</summary>
    public virtual void SyncClientPackageID() { }
 
    /// <summary>动态申请单个权限</summary>
    public virtual void RequestPermission(string permission, Action<string, int> callBack) { }
 
    /// <summary>启动时批量申请权限(由SDK决定策略)</summary>
    public virtual void RequestPermissionStart() { }
}