将Unity与Eclipse集成 - 如何遵循"官方"教程的说明?

mde*_*lmo 7 eclipse android unity-game-engine

我已经阅读了有关如何将针对Android的Unity3D项目集成到eclipse中的所有文档.我想这样做的原因是能够在我自己的"普通"Android应用程序中调用Unity3D Activity.

好吧,我尝试按照本教程中列出的步骤操作.使用我能想象的所有组合,我做了以下事情:

  1. 我使用Unity Android项目并构建它(在Unity IDE中),然后将/Temp/StagingArea/文件夹复制到另一个位置.

  2. 我创建了一个新的Android项目,使用现有源创建,设置StagingArea复制文件夹的位置.这将是Android Library Project.检查属性 - > Android上的"is Library".

  3. 再次,我创建了一个Android项目,导入了以前创建的Android库项目classes.jar.

  4. asset从库项目文件夹的内容,以"活动"项目.它有两个子文件夹,binlibs.

  5. 我修改生成的Activity来扩展UnityPlayerActivity和删除onCreate方法的setContent行.更改程序包以匹配Unity Player程序包ID.

  6. 将相应的行添加到清单,基本上是库项目中的那些行.

所以一切都编译没有错误,我可以运行项目,显示启动画面,然后是黑屏,正确播放Unity场景的声音.logcat显示以下错误:

01-26 16:51:46.415: D/dalvikvm(2299): Trying to load lib /data/data/es.fundacionvf.unity.gps/lib/libQCARWrapper.so 0x40515a38
01-26 16:51:46.415: E/Unity(2299): Unable to find QCARWrapper
01-26 16:51:46.415: D/dalvikvm(2299): Trying to load lib /data/data/es.fundacionvf.unity.gps/lib/libQCARWrapper.so 0x40515a38
01-26 16:51:46.415: E/Unity(2299): Unable to find QCARWrapper
01-26 16:51:46.415: D/dalvikvm(2299): Trying to load lib /data/data/es.fundacionvf.unity.gps/lib/libQCARWrapper.so 0x40515a38
01-26 16:51:46.415: E/Unity(2299): Unable to find QCARWrapper
01-26 16:51:46.415: I/Unity(2299): StopQCAR
01-26 16:51:46.415: I/Unity(2299): UnityEngine.Debug:Internal_Log(Int32, String, Object)
01-26 16:51:46.415: I/Unity(2299): UnityEngine.Debug:Log(Object)
01-26 16:51:46.415: I/Unity(2299): UnityEngine.MonoBehaviour:print(Object)
01-26 16:51:46.415: I/Unity(2299): TrackerBehaviour:StopQCAR()
01-26 16:51:46.415: I/Unity(2299): TrackerBehaviour:OnApplicationPause(Boolean)
01-26 16:51:46.415: I/Unity(2299):  
01-26 16:51:46.415: I/Unity(2299): (Filename: /Applications/buildAgent/work/842f9557127e852/Runtime/Export/Generated/UnityEngineDebug.cpp Line: 34)
01-26 16:51:46.425: D/dalvikvm(2299): Trying to load lib /data/data/es.fundacionvf.unity.gps/lib/libQCARWrapper.so 0x40515a38
01-26 16:51:46.425: E/Unity(2299): Unable to find QCARWrapper
01-26 16:51:46.425: I/Unity(2299): DllNotFoundException: QCARWrapper
01-26 16:51:46.425: I/Unity(2299):   at (wrapper managed-to-native) TrackerBehaviour:stopTracker ()
01-26 16:51:46.425: I/Unity(2299):   at TrackerBehaviour.StopQCAR () [0x00000] in <filename unknown>:0 
01-26 16:51:46.425: I/Unity(2299):   at TrackerBehaviour.OnApplicationPause (Boolean pause) [0x00000] in <filename unknown>:0 
Run Code Online (Sandbox Code Playgroud)

提一下......阅读这两个SO问题:12.它们似乎已经成功,因此可以实现遵循这些步骤(或类似步骤).

我还在Unity3D论坛上找到了有用的这个主题,它基本上以更清晰的方式描述了相同的过程.

有没有人遇到过这个问题?有什么建议或替代方案吗?

问候.

sun*_*rer 8

对于任何绊倒这个的人来说,Unity3d与android eclipse项目的集成在之前的版本(3.5)中被打破了!

使用较新版本的Unity(使用3.5.2成功测试)一切都按照这些步骤再次正常工作.

如果要定义自己的活动或在片段中使用Unity,可以直接使用UnityPlayer类.为此,您可以查看Unity论坛中提到的[UNITY_INSTALLATION]\Editor\Data\PlaybackEngines\androidplayer\src\com\unity3d\player.

或者只是尝试这个适合我们的代码:

    UnityPlayer mPlayer = new UnityPlayer(getActivity()); // Put your activity object here
    int glesMode = mPlayer.getSettings().getInt("gles_mode", 1);
    boolean trueColor8888 = false;
    mPlayer.init(glesMode, trueColor8888);

    // Get the view - e.g. to return from the fragment method onCreateView:
    View view = mPlayer.getView();
Run Code Online (Sandbox Code Playgroud)

更新:第一个链接不再在unity3d支持页面上提供,但论坛条目也包含所有必需的步骤!