Unity和Eclipse的集成

Nic*_*las 4 eclipse integration android unity-game-engine

嘿伙计们,我需要一点帮助将Unity集成到Eclipse中

我的参考页面是这里=> 这里

我有Unity3D Pro版和Android插件专业版

  • 像往常一样设置Unity Android项目并点击Build.
  • 输入您的项目文件夹,转到Temp/StagingArea.
  • 将所有项目文件复制到新文件夹.
  • 将此文件夹作为Eclipse中的新Android项目导入.
  • 将此项目标记为项目属性窗口中的库.(右键单击项目名称,转到Properties-> Android并标记"Is Library".)
  • 在Eclipse中创建一个新的Android项目.这将构成项目的Java部分.
  • 将Unity Android项目作为库添加到新项目中.(右键单击项目名称,转到Properties-> Android,选择"Add ...",添加项目.)
  • 将classes.jar库添加到新项目的库引用中.(在属性中,转到Java_Build_path-> Libraries,选择"Add External Jar ...",导航到UNITY_INSTALLATION\Editor\Data\PlaybackEngines \和roidplayer\bin并添加classes.jar)

到现在为止,如果我将这个小项目运行到我的设备中,我会得到类似的东西

您可以通过此链接查看图片.

https://copy.com/vVaCyQTEUECV

下一步是这样的:

  • 将assets文件夹从库项目移动到新项目.(Android不允许在库中使用资源,并且每当重建Unity项目时都必须重复这最后一步.)

我正在将资产文件夹和res文件夹从库项目移动到新项目.

之后我将从库移动AndroidMnifest.xml并替换项目

这是我的MainActivity.java代码

package com.Developer.PackMan;

import com.unity3d.player.UnityPlayerNativeActivity;


import android.os.Bundle;

public class MainActivity extends UnityPlayerNativeActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

}
}
Run Code Online (Sandbox Code Playgroud)

这是Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.Developer.PackMan" android:theme="@android:style/Theme.NoTitleBar" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal">
  <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
  <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false">
    <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name" android:screenOrientation="landscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
    </activity>
  </application>
  <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19" />
  <uses-feature android:glEsVersion="0x00020000" />
  <uses-feature android:name="android.hardware.sensor.accelerometer" />
</manifest>
Run Code Online (Sandbox Code Playgroud)

在我构建它之后,我收到了以下文本的错误

应用程序)进程com.Developer.Packman)意外停止请再试一次.

问题是我在LogCat或Console中没有出现任何错误,一切都很清楚.

我真的需要你的帮助.谢谢.

Jak*_*keP 5

对于必须同时显示Unity3d和常规Android UI的应用程序,我编写了一份供将来使用的指南.AFAIR它基于Unity3d 4.3版.我希望它足够详细:)

基于链接:http: //forum.unity3d.com/threads/98315-Using-Uni​​ty-Android-In-a-Sub-View/page4?p=1477830&viewfull=1#post1477830

https://developer.vuforia.com/resources/dev-guide/extending-unity-android-activity-and-adding-custom-views-eclipse

预设置:

要开始集成Unity3d和Android,您需要在'... Unity\Editor\Data\PlaybackEngines\androidplayer\bin'中找到classes.jar文件.您可以将它放在工作区目录中.

建立:

  1. 从一个包含所有Android位的Android项目开始.
  2. 准备Unity3d Android项目.像常规Android项目一样将Unity项目导入您的工作区.
  3. 在Unity项目中使用RMB,单击"属性",然后转到"Android"并勾选"是库?"复选框.
  4. Android项目上的人民币,单击"属性",然后转到"Android"并单击"添加"将一个库 - Unity项目 - 添加到Android.
  5. 仍然在"属性"对话框中,转到"Java构建路径"并选择"库"选项卡.在那里,单击"添加外部JAR"并导航到classes.jar文件.
  6. 确保两个项目都针对相同的SDK.
  7. 将"assets"文件夹从Unity项目移动到Android项目中.每次重建Unity项目时都必须重复此步骤.

编码:

本指南假设您的目标是拥有一个Android活动,该活动将同时显示Unity模型和常规Android UI.

  1. 将以下行添加到项目清单文件的基础:''.
  2. 将清单中的以下行添加到应包含Unity模型的活动中:''.这样可以将触摸事件传递给Unity模型和常规Android UI.
  3. 使活动扩展UnityPlayerActivity而不是Activity.
  4. 不要在onCreate()中直接添加'setContentView' - 这会导致不必要的行为 - 在我的情况下,Unity模型非常小,无法与之交互; 相反,在onResume()中找到UnityPlayer对象的父视图,并在其中膨胀布局并添加所有其他UI元素.请注意,可能需要在单独的线程中查找所述视图.

故障排除:

  • 扩展UnityPlayerActivity的类的NoClassDefFoundException(或类似):转到Android项目的属性,然后是Java Build Path - > Order and Export并勾选classes.jar(在我的情况下,如果它有所不同,它位于列表顶部).按确定,清理项目,尝试再次运行并播放...
  • 多个dex文件定义Lcom/unity3d/player/nativeloader - 确保Unity项目中的"libs"目录不包含"unity-classes.jar"文件.
  • (不确定但值得一试)src文件夹中的问题 - 删除src文件夹的内容

这里有一些示例代码来说明Activity哪个包含Unity3d对象:

private Button buttonChangeColour;
private UnityPlayer unityPlayer = null;

@Override
public void onResume() {

    super.onResume();

    if (unityPlayer == null) {

        View rootView = findViewById(android.R.id.content);
        unityPlayer = findUnityPlayerView(rootView);

        if (unityPlayer != null) {

            ViewGroup unityPlayerParentView = (ViewGroup)(unityPlayer.getParent());
            View mainHomeView = getLayoutInflater().inflate(R.layout.activity_home, null);
            LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            unityPlayerParentView.addView(mainHomeView, layoutParams);

            buttonChangeColour = (Button) findViewById(R.id.buttonChangeColour);
            buttonChangeColour.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    // [...]
                }
            });
        }
    }
}

private UnityPlayer findUnityPlayerView(View view) {

    if (view instanceof UnityPlayer) {

        return (UnityPlayer) view;
    }
    if (view instanceof ViewGroup) {

        ViewGroup childrenViews = (ViewGroup) view;

        for (int i = 0; i < childrenViews.getChildCount(); i++) {

            UnityPlayer foundView = findUnityPlayerView(childrenViews.getChildAt(i));

            if (foundView != null) {

                return foundView;
            }
        }
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)