我正在尝试编写一个可在iOS和Android上运行的Unity插件。 我的插件有两个入口点,一个用于iOS,另一个用于Android。
问题是,当我只使用iOS类并尝试从Unity构建XCode项目时,我收到此错误:
无法加载类UnityEngine.AndroidJavaObject,在UnityEngine中使用
AndroidJavaObject类仅用于从未由统一脚本引用的Android类。
问题是我想提供一个“只适用于iOS和Android”的插件。该插件已编译,因此我无法使用任何统一的预处理器标志。
我该如何解决这个问题?
答案 0 :(得分:1)
如果您需要访问本机API,我认为除了条件编译之外别无选择。我建议通过使用接口来使用封装插件访问,例如:
public interface IMyPlugin
{
void Do ();
}
public class MyIOSConnector : IMyPlugin
{
public void Do () {
#if UNITY_IOS
// iOS implementation
#endif
}
}
public class MyAndroidConnector : IMyPlugin
{
public void Do () {
#if UNITY_ANDROID
// Android implementation
#endif
}
}
public static class MyPlugin
{
static IMyPlugin _myPlugin = null;
public static IMyPlugin Access {
get {
if (_myPlugin == null) {
#if UNITY_EDITOR
// maybe this needs special handling e.g. a dummy implementation
#endif
switch (Application.platform) {
case RuntimePlatform.IPhonePlayer:
_myPlugin = new MyIOSConnector ();
break;
case RuntimePlatform.Android:
_myPlugin = new MyAndroidConnector ();
break;
default:
break;
}
}
return _myPlugin;
}
}
}
您可以从其他课程中致电:
MyPlugin.Access.Do ();