Articles of unity3d

在Unity应用程序启动时阅读Android意图附加数据

我使用自定义隐式意图从另一个Android应用程序启动Unity应用程序。 这工作正常,但我不知道如何阅读在Unity中的意图额外的数据? ANDROID意图启动UNITY APP i=new Intent(); i.setAction("com.company.unityapp.MyMethod"); i.putExtra("KEY","This is the message string"); startActivity(i); UNITY APP AndroidManifest.xml <intent-filter> <action android:name="com.company.unityapp.MyMethod" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 我的场景中有一个GameObject,附有一个脚本。 在启动方法里面,我有这个代码来尝试读取与意图一起传递的额外数据 AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent"); bool hasExtra = intent.Call<bool> ("hasExtra", "arguments"); if (hasExtra) { AndroidJavaObject extras = intent.Call<AndroidJavaObject> ("getExtras"); arguments = […]

将Unity与Eclipse集成 – 如何遵循“官方”教程的说明?

我已经阅读了关于如何将针对Android的Unity3D项目集成到eclipse中的所有文档。 我想这样做的原因是能够在我自己的“普通”Android应用程序中调用Unity3D Activity。 那么,我试图按照本教程中列出的步骤。 使用我能想象到的所有组合,我做了以下操作: 我使用Unity Android项目并在Unity IDE中构build它,然后将/Temp/StagingArea/文件夹复制到另一个位置。 我创build了一个新的Android项目,使用从现有源创build,设置StagingArea复制文件夹的位置。 这将是Android库项目。 在属性 – > Android上检查“库”。 再次,我创build一个Android项目,导入以前创build的Android库项目和classes.jar 。 我将 asset文件夹的内容从库项目移动到“活动”项目。 它有两个子文件夹, bin和libs 。 我修改生成的Activity以扩展UnityPlayerActivity并删除onCreate方法的setContent行。 更改软件包以匹配Unity Player软件包ID。 将相应的行添加到清单,基本上是库项目中的那些行。 所以一切都编译没有错误,我可以运行该项目,显示启animation面,然后黑屏,正确地播放我的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): […]

错误:与元素types“uses-sdk”关联的属性“tools:overrideLibrary”的前缀“tools”未绑定

我得到了以下错误,同时在mac osx塞拉利昂build立从统一的apk文件。 这也构build好之前,我重新启动我的MacBook,但不是现在。 我在下面添加了错误详细信息: 注意:我正在使用Facebook的SDK。 Error: Error while saving blame file, build will continue Error: The prefix "tools" for attribute "tools:overrideLibrary" associated with an element type "uses-sdk" is not bound. UnityEditor.HostView:OnGUI() 和: AndroidSDKToolsException: Unable to merge android manifests. See the Console for more details. UnityEditor.Android.AndroidSDKTools.DetectErrorsAndWarnings (System.String logMessages, System.String errorMsg) UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] […]

Android – 在活动中embeddedUnity3d场景 – 需要注销接收器?

我一直是一个SO成员,但从来没有问过一个问题,所以在这里.. 我的目标 我正在尝试做两个活动的Android应用程序。 首先是一个菜单屏幕(使用标准的Android UI元素)和一个打开游戏活动的button。 游戏活动将包含一些标准的Android UI元素和一个包含Unity 3D场景的FrameLayout。 我正在使用Unity 5和Eclipse Luna。 我正在工作 我用一个简单的button做了菜单屏幕来开始第二个活动。 我遵循这个教程,并设法让我的Unity场景embedded到我的第二个活动中。 迄今为止所有的好… 问题 我第一次开始玩游戏的时候,它可以正常工作(我可以看到我的FrameLayout中embedded了Unity场景),但是如果closures活动(返回菜单活动),然后再次启动游戏活动,则会出现此错误。 。 Activity has leaked IntentReceiver com.unity3d.player.UnityPlayer$17@41866de0 that was originally registered here. Are you missing a call to unregisterReceiver()? 我试过了 我在网上做了很多search,看起来像我需要在onPause或onDestroy中调用这样的东西; m_UnityPlayer.currentActivity.unregisterReceiver(receiver); …但我不知道接收器是什么,所以我不能在我的unregisterReceiver调用中引用它 。 我已经尝试创build一个BroadcastReceiver,注册它,然后取消它在onPause注册,但没有任何区别。 我在统一论坛上发现了一个post ,提出了完全相同的问题,但令人沮丧的是,这个问题没有得到答复(Unity论坛上的很多问题似乎都没有得到答复,这就是为什么我带着这个问题来到这里)。 我也尝试在onDestroy中调用这个方法,但是当我closures游戏活动时,它实际上退出了我的整个应用程序。 m_UnityPlayer.quit(); 代码示例 这是我的游戏活动的代码(为了清楚起见,我已经删除了导入)。 public class MyEmbeddedUnityActivity extends Activity { private UnityPlayer […]

手机游戏与统一 – 插件的应用程序内购买

我正在用Unity开发一款手机游戏,虽然运行核心游戏循环非常容易,但是我一直在使用移动设备的界面,尤其是苹果和谷歌提供的应用内购买function方面遇到了一些问题。 我听说有插件谁可以帮助。 有没有地方列出所有的选项,并可以让我轻松地比较它们?

Unity中创build的游戏如何在Android设备上运行?

我新使用Unity,如果我理解正确,它使用C#语言。 Android设备只能运行Java应用程序,这是其虚拟机的工作:Dalvik。 那么怎么才能做到这个程序的function“编译”到Android?

不能在统一的java插件上使用谷歌播放服务

我有一个用Java编写的Unity插件。 在这个插件,我需要得到新的谷歌广告ID来做到这一点,我必须添加到清单文件: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> 当我编译时,Unity正在抛出错误: Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details. /Applications/adt/sdk/build-tools/android-4.2.2/aapt package –auto-add-overlay -v -f -m – J gen -M AndroidManifest.xml -S "res" -I "/Applications/adt/sdk/platforms/android- 19/android.jar" -F bin/resources.ap_ stderr[ AndroidManifest.xml:21: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version'). […]

当执行eglSwapBuffer和eglMakeCurrent时性能低下

我正在开发一个允许用户logging他/她的游戏玩法的Android Unity插件 我的解决scheme概述: 使用OpenGl FrameBufferObject(FBO)使Unity渲染离开这个FBO 获得这个FBO的离线纹理,然后用于2个目的: 渲染到video表面 重绘到设备屏幕 每帧执行stream程: 绑定我的FBO 渲染场景到FBO(统一码) 解开我的FBO 设置video表面 configuration表面大小(仅限第一次执行) 保存egl状态 使video表面电stream 使用FBO的离屏纹理绘制到video表面 恢复到默认的表面 将演示时间设置为video帧 从video表面交换缓冲区到默认窗口 恢复egl状态 使默认的表面电stream 通知编码器线程数据已准备好写入 我的问题是录制时的performance不好。 三星Galaxy S4的FPS从60降低到40。 我试图logging渲染操作的执行时间,并认识到最影响性能操作是使video表面当前操作和从video表面到默认窗口操作的交换缓冲区。 以下是他们的代码 public void makeCurrent() { if (!EGL14.eglMakeCurrent(this.mEGLDisplay, this.mEGLSurface, this.mEGLSurface, this.mEGLContext)) throw new RuntimeException("eglMakeCurrent failed"); } public boolean swapBuffers() { return EGL14.eglSwapBuffers(this.mEGLDisplay, this.mEGLSurface); } 执行当前操作的时间为1〜18 ms 交换缓冲区的执行时间为4〜14 ms 其他操作的执行时间通常为0〜1 […]

什么是UnityPlayerActivity,UnityPlayerNativeActivity,UnityPlayerProxyActivity?

我很困惑unity.jar包含这三个文件:UnityPlayerActivity,UnityPlayerNativeActivity,UnityPlayerProxyActivity。 你能帮我理解他们是如何工作的吗? 他们有什么function? 为什么Android可以find我的插件,如果我通过Unity编辑器将清单上的活动设置为UnityPlayerActivity?

统一Android APK在启动时崩溃

好,自从我上次成功构build以来,我所做的就是尝试从这里添加Google Play服务到我的游戏中。 我导入了统一包,并在相关的设置窗口中设置Android的谷歌玩游戏。 我试图build立在这一点上,但是我无法得到这个奇怪的错误,同时构builddex文件,表示aar文件之间有冲突。 我缩小了由assets / plugins / android / play-services-base-9.0.2和assets / plugins / android / play-services-basement-9.0.2引起的。 我没有选中这两个正在build立到Android的转换到dex错误的东西消失。 我认为这将是确定的。 然后,我将应用程序推送到Google Play(alpha环境)以及一个用于Google Play的小控制器脚本,以便在start()上login: void Awake() { // recommended for debugging: PlayGamesPlatform.DebugLogEnabled = true; // Activate the Google Play Games platform PlayGamesPlatform.Activate(); } void Start() { Login(); } void Login() { Social.localUser.Authenticate((bool success) => { LoggedIn = […]