gpt4 book ai didi

android - Unity 与 Eclipse 的集成

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:12 26 4
gpt4 key购买 nike

在将 Unity 集成到 Eclipse 方面,我需要一些帮助。

我的引用页是这个=> here

我有Unity3D Pro版和Android Plugin Pro版

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

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

你可以从这个链接看到图片。

https://copy.com/vVaCyQTEUECV

下一步是这样的:

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

我正在将 asset 文件夹和 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);

}
}

这是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>

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

应用程序 )process com.Developer.Packman) 意外停止请重试。

问题是我在 LogCat 或控制台中没有收到任何类型的错误,一切都很清楚。

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

最佳答案

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

基于链接: http://forum.unity3d.com/threads/98315-Using-Unity-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 项目。导入Unity项目像常规 Android 项目一样进入您的工作区。
  3. Unity工程上的RMB,点击“Properties”,然后进入“Android”,勾选“Is图书馆?”复选框。
  4. 在Android项目上点击“属性”,然后进入“Android”并点击“添加”添加一个库——Unity项目——到Android项目。
  5. 仍然在“属性”对话框中,转到“Java 构建路径”并选择“库”选项卡。在那里,单击“添加外部 JAR”并导航到 classes.jar文件。
  6. 确保两个项目都以相同的 SDK 为目标。
  7. 将“assets”文件夹从 Unity 项目移到 Android 项目中。这一步每次重建 Unity 项目时都必须重复。

编码:

本指南假设您的目标是让 Android Activity 同时显示 Unity 模型和常规 Android UI。

  1. 将以下行添加到项目 list 文件的底部:''。
  2. 将 list 中的以下行添加到应该包含 Unity 模型的 Activity 中:''。这使得触摸事件能够传递到 Unity 模型和常规 Android UI。
  3. 使 Activity 扩展 UnityPlayerActivity 而不是 Activity。
  4. 不要直接在 onCreate() 中添加“setContentView”——这会导致不需要的行为——在我的例子中,Unity 模型非常小,无法与之交互;相反,在 onResume() 中找到 UnityPlayer 对象的父 View ,并在其中膨胀布局并添加所有其他 UI 元素。请注意,可能需要在单独的线程中查找所述 View 。

故障排除:

  • NoClassDefFoundException(或类似的)在扩展 UnityPlayerActivity 的类上:转到您的 Android 项目的属性,然后是 Java 构建路径 -> 订购和导出并勾选 classes.jar(在我的例子中它位于列表的顶部,如果有任何区别)。按确定,清理项目,尝试再次运行并祈祷......
  • 多个 dex 文件定义 Lcom/unity3d/player/nativeloader - 确保 Unity 项目中的“libs”目录不包含“unity-classes.jar”文件。
  • (不确定但值得一试)src 文件夹中的问题 - 删除 src 文件夹的内容

下面是一些示例代码来说明包含 Unity3d 对象的 Activity:

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;
}

关于android - Unity 与 Eclipse 的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22837606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com