1个基础类和4个继承类(android ios windows editor),基础类提供虚函数,基础方法,以及通过该类的单例选中平台。继承类更具自身平台决定重写方法。
基础类包括以下内容:
单例选择平台。
2种路径的获得。其中一种使用file://这种方式。解释如下:
c:\ 这样的地址是不能放在超联接中的。
file:/// 这样的可以放在超联接中。是url(通用资源定位符)中的文件定位。用于ie浏览及internet定位。用来访问你的本地硬盘上的某个文件
平台sdk处理,平台声音管理,以及一些不是很懂的东西。
对应android平台,继承类之一,包括以下内容:
初始化,拿到android与unity通信的几个对象,包括,处理声音,图片,资源等。
2种路径的获得,重写,从android中拿到对应的位置信息。
之后的处理sdk相关的信息都是通过unity调用android函数完成,包括,支付,登录,声音管理,资源管理等。
部分代码如下:
基础类:
case UnityEngine.RuntimePlatform.Android:
s_instance = new Platform.Android.PlatformAndroid();
break;
public virtual string GetPath(string relativePath)
{
StringBuilder sb = new StringBuilder();
sb.Append(UnityEngine.Application.dataPath);
sb.Append("/../resource/");
sb.Append(relativePath);
return sb.ToString();
}
public virtual string GetBundlePath(string relativePath)
{
StringBuilder sb = new StringBuilder();
sb.Append("file://");
sb.Append(UnityEngine.Application.dataPath);
sb.Append("/../resource/");
sb.Append(relativePath);
return sb.ToString();
}
android平台类:
AndroidJNI.AttachCurrentThread();
AndroidJavaClass cls = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
m_AJO = cls.GetStatic<AndroidJavaObject>("currentActivity");
GetAndroidPath();
cls = new AndroidJavaClass("com.xxx.utils.MyVoiceManager");
m_AJOVoiceManager = cls.CallStatic<AndroidJavaObject>("getInstance");
public override string GetPath(string relativePath)
{
StringBuilder sb = new StringBuilder();
sb.Append(m_DataDir);
sb.Append(NomalizePath(relativePath));
string fullPath = sb.ToString();
if (File.Exists(fullPath))
{
return fullPath;
}
return new StringBuilder().Append(Application.streamingAssetsPath).Append("/").Append(NomalizePath(relativePath)).ToString();
}
public override void InitSDK()
{
m_AJO.Call("initSDK");
}
public override void GenPhoto(int type)
{
m_AJOMyPictureManager.Call("genPicture", type);
}