Unity3D和Android Studio集成

20
有人知道如何将Android与Unity Studio集成吗?(我会解释)
我在Unity中创建了一个简单的场景(在OSX Mavericks上使用4.3.x)。它只有一个3D对象,没有其他内容。
我按照Stackoverflow上的说明在XCode中完成了这个功能,并在这里发布了我的完整代码(触摸UIButton并在UIView或UIViewController上显示Unity),以证明它确实很简单。
但现在,我需要在Android Studio中完成同样的功能(我已经安装了它并可以从Unity导出项目)。
唯一我知道的是,AndroidManifest.xml和文件在“res/layout/(something).xml”文件中,它们是在Android Studio中创建项目时第一个读取并显示屏幕布局的文件。

当你打开Unity生成的项目时,你只有AndroidManifest.xml文件。
所以我迷失了。因为第三方网站的文档(http://www.rbcafe.com/Softwares/Unity/Documentation/Manual/android-GettingStarted.html)只提到了Unity Eclipse和JAVA文件,而这些文件在项目中不存在,让我更加迷失了。

在Objective-C中,你创建somethingDelegate.mm和.h文件并插入“一行代码”即可完成。在Android中似乎并不像官方文档(http://docs.unity3d.com/Manual/PluginsForAndroid.html)所说的那样简单。

有人已经在Android Studio中完成了这个功能,并可以帮助我吗?

提前致谢。

**编辑以获取悬赏:**
需要创建3个视图:
1-带有2个按钮的主视图;
2 - 一个按钮跳转到第二个视图;
3 - 另一个按钮跳转到Unity视图;

在Android上必须有一种简单的方法来实现这一点,因为一家工作室制作了上面的链接。

1
上次我检查时,Unity仅支持Eclipse项目。此外,由于Android Studio仍处于测试版阶段,我相信Unity尚未做出任何支持它的努力。 - ozbek
由于Android Studio和Unity使用JAVA和C#,我相信这是一种方法,因为Unity使用JDK导出Google项目,而其他DK内置在Android Studio中。所以,有一种方法...我想...rs - Daniel Arantes Loverde
你的问题是什么?将项目导入Android Studio没有问题。导入项目后,你想要实现什么目标? - Stefan Hoffmann
我正在尝试与Unity集成,例如:创建一个简单的页面,其中包含2个按钮,一个按钮是另一个视图,另一个是Unity。仅此而已。但在Android Studio中,这并不简单... - Daniel Arantes Loverde
你有什么进展吗?我已经尝试使用Eclipse将Unity项目与Android集成,现在已经完成了。Unity软件生成了两个按钮和一个UnityPlayerNativeActivity。请告诉我如何帮忙。 - MOSO
不是Eclipse,而是Android Studio - Daniel Arantes Loverde
3个回答

22

搭建Android项目非常简单。你提供的文档已经过时,你无需移动任何文件。

Unity

  1. 进入 File -> Build Settings -> Android 并点击 Switch Platform
  2. 启用 Google Android Project
  3. 点击 Export 并选择您想要将Android项目放置的位置

Android Studio

  1. 导入或打开您使用Unity创建的项目
  2. 完成 :)

如果您希望在子活动中显示Unity引擎,建议您查看此答案

如果您完全不熟悉Android开发,请从简单的 "Hello World" 应用程序开始,而不要添加Unity来复杂化问题。只需按照一些官方Android指南的步骤即可。


3
抱歉,@JackLoverde,我不会为您编写一份逐步教程来添加2个按钮和几个视图。嵌入Unity已在我的链接答案中解释,其余部分请阅读链接指南。如果您在使用Android Studio时遇到问题,请搜索教程或提出具体问题。 - Stefan Hoffmann
2
@leosori - 抱歉打扰这个帖子 - 我有一个关于Android Studio的小工作流问题。如果我使用A.S. "打开"我的Unity导出文件,我必须设置一堆配置,而且似乎不太对劲。如果我"导入"Unity导出文件,事情看起来很好 - 它可以运行和一切,但是小问题是A.S.已经复制了我的项目文件 - 这让我想知道如何在Unity中进行更改并将它们导入A.S. - 重新导入项目?还是我可以使用符号链接?或者设置gradle指向以前的项目?TIA,并为android新手问题感到抱歉。 - orion elenzil
1
@StefanHoffmann,这并没有回答OP的问题。OP想知道如何在Android应用程序内启动Unity窗口,而不是在Android Studio中打开Unity项目。如果您查看他提到的有关在Xcode中执行相同操作的链接,您就会意识到这一点。 - kfblake
1
@StefanHoffmann。再次声明,不是回答原帖问题。我正在做非常相似的事情,并遇到了完全相同的问题。在评论中争论这个问题对任何人都没有帮助。原帖问如何在本地Activity旁边运行Unity。 对于iOS和Eclipse,这是一个非常复杂、详细的过程。目前尚不清楚如何在Android Studio中实现同样的功能。 - kfblake
1
如何关闭Unity应用程序游戏并返回到主活动? - Bluetree
显示剩余7条评论

14

我将Unity项目集成到了一个Android应用程序中。

我使用Android Studio创建了一个带有按钮的简单活动。

点击此按钮将启动Unity场景。

My Activity Unity Activity


从Unity导出的Android项目应该是这样的: enter image description here


首先需要将其转换为Gradle项目。

方法如下:

  1. 打开Android Studio -> 选择“导入项目” -> 选择Unity项目(非Gradle项目)->保存项目并关闭。

现在您的Unity项目文件夹应该像这样:

enter image description here


现在打开您的项目并执行以下操作以将Unity项目导入到您的项目中:

  1. 点击文件 -> 新建 -> 新模块 -> 选择“导入Gradle项目” -> 选择您刚创建的Unity Gradle项目文件夹 -> 如果Android Studio提示,请通过选择“导入”复选框来重命名模块名称 -> 点击“完成”
  2. 在Settings.gradle文件中验证新模块名称是否已添加到include命令中:

include ':app', ':yournewmodulename’
  • 从导航窗口打开新的Unity模块的build.gradle文件,并将以下行重命名:

  • apply plugin: 'com.android.application'
    

    apply plugin: 'com.android.library'
    
  • 从新的Unity模块的defaultConfig部分中删除该行:

  • applicationId "com.xxx.xxx"
    
  • 打开这个新的unity模块的清单文件并注释掉应用标签(不要删除uses-sdk标签)。通过将必要的标签移动到我们项目的清单文件中(例如:Activityuses-feature等),将新的unity模块的清单文件与您的项目的清单文件集成。

  • 打开您项目的build.gradle文件,并在依赖项部分添加以下行:

  • dependencies {
    …
    compile project(path: ':yournewmodulename')
    
    }
    

    现在,您可以通过以下方式从您的 activity 中单击按钮调用 unity 模块中的 Activity:

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import com.xxx.xxx.UnityPlayerActivity;
    
    public class MainActivity extends AppCompatActivity {
    
    private Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button= (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, UnityPlayerActivity.class);
                startActivity(i);
            }
        });
    }
    }
    

    如何关闭Unity应用程序游戏并返回到主活动? - Bluetree
    2
    你可以在“UnityPlayerActivity”类中创建带有“finish()”方法的函数,并在用户想要退出游戏时从Unity游戏中调用它。https://dev59.com/WIbca4cB1Zd3GeqPSjLj#27730800 - mustaq
    你好Mustaq,我已经按照你的建议成功集成了。能否告诉我如何从Android传递一个字符串到Unity游戏中?我的问题链接是https://stackoverflow.com/questions/59370546/retrieve-data-from-android-activity-to-unity3d,请检查一下我的问题。 - Suhail Pappu
    嗨,Suhail,根据你在分享的问题中最后一条评论,我相信你已经找到了解决方案。 - mustaq
    有新的技巧吗?这在新版的Android Studio和Unity上无法工作。现在Unity创建了一个带有没有Java活动的启动器库。请问是否有新的技巧、教程或建议? - user15919016

    4

    要在Android Studio中打开Unity3D项目,截至2016年3月,您需要执行以下操作:文件 -> 新建 -> 导入,然后让它自动完成。

    或者,如果您有快速启动窗口:

    enter image description here


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接