com.guru.unity.sdk.core/Runtime/GuruCore/Runtime/Common/GuruSDKCallback.cs

76 lines
1.9 KiB
C#

namespace Guru
{
using UnityEngine;
using System;
/// <summary>
/// SDK回调实体
/// </summary>
public class GuruSDKCallback: MonoBehaviour
{
public const string ObjectName = "GuruCallback";
public const string MethodName = nameof(OnCallback);
private event Action<string> msgCallback;
private static GuruSDKCallback _instance;
public static GuruSDKCallback Instance
{
get
{
if (_instance == null)
{
_instance = Create();
}
return _instance;
}
}
/// <summary>
/// 创建对象
/// </summary>
/// <returns></returns>
private static GuruSDKCallback Create()
{
var go = new GameObject();
go.name = ObjectName;
DontDestroyOnLoad(go);
var ins = go.AddComponent<GuruSDKCallback>();
return ins;
}
private void SubCallback(Action<string> callback)
{
msgCallback -= callback;
}
/// <summary>
/// External 回调参数
/// </summary>
/// <param name="message"></param>
public void OnCallback(string message)
{
msgCallback?.Invoke(message);
}
/// <summary>
/// 添加回调
/// </summary>
/// <param name="callback"></param>
public static void AddCallback(Action<string> callback)
{
Instance.msgCallback += callback;
}
/// <summary>
/// 添加回调
/// </summary>
/// <param name="callback"></param>
public static void RemoveCallback(Action<string> callback)
{
Instance.msgCallback -= callback;
}
}
}