本演示项目在Unity for Android Build中启用部分华为HMS和AGC服务,对应的类和函数的名称和用法相同。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

55 行
1.7 KiB

using System;
using System.Collections.Generic;
using UnityEngine;
namespace HuaweiService{
public class HmsUtil{
public static object TransferParam(object arg)
{
if (arg is IHmsBase)
{
IHmsBase a = arg as IHmsBase;
return a.param;
}
return arg;
}
public static object[] TransferParams(params object[] args)
{
for (int i = 0; i < args.Length; i++)
{
args[i] = TransferParam(args[i]);
}
return args;
}
public static T GetHmsBase<T>(AndroidJavaObject obj) where T:IHmsBase,new(){
T a = new T();
a.obj = obj;
return a;
}
private static Dictionary<Type, Dictionary<string, IHmsBase>> _enums = new Dictionary<Type, Dictionary<string, IHmsBase>>();
internal static T GetStaticValue<T>(string value, string className="") where T : IHmsBase, new()
{
var type = typeof(T);
if (!_enums.ContainsKey(type))
{
_enums.Add(type, new Dictionary<string, IHmsBase>());
}
if (!_enums[type].ContainsKey(value))
{
var result = new T();
if(className.Length > 0) {
var cls = new AndroidJavaClass(className);
result.obj = cls.GetStatic<AndroidJavaObject>(value);
} else {
result.obj = result.obj.GetStatic<AndroidJavaObject>(value);
}
_enums[type].Add(value, result);
}
return (T)_enums[type][value];
}
}
}