㈠ 破解版unity3d不能导出andriod
导出的时候点playersetting,然后在右边的Inspector中选择other settings设置一下minimun api level 然后在你的android sdk中安装相应的api,你这个是因为android sdk中没有android版本,一般从1.5开始装起,做安卓最麻烦的就是平台不统一,需要适配,同时要不同平台,不同版本都测一下,1.5,2.1,2.2……4.0最好都测试一下。至少模拟器上跑一下是必要的,不然apk真机安装以后会出现各种莫名其妙的错误
㈡ unity3d导出Android的apk时每当选择保存sdk文件夹后,导出的进度条就会跳掉,无法导出
将sdk文件夹中bulid-tools/androi-4.4W中的zipalign.exe拷贝到tools文件夹中就可以解决这个问题,我也是被折磨了好久才找到这个答案的。
㈢ 用Unity3D做好了自己的游戏项目,怎么导入到android手机上玩,是不是还需要调用android的SDK
u3d可以直接导出为android平台apk包的,不需要做对应的处理,使用u3d语言即可
㈣ unity可以用c#开发,那么怎么移植到android上的
为了实现交互,我们采用的是简单的函数相互调用。如果我们在Unity3D中想调用Android代码,那么可以在脚本文件C#中这样写:AndroidjavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity"); activity.Call("UnlockGame")第一行代码构造了"com.unity3d.player.UnityPlayer"类的一个对象,然后获取了本类的静态成员"currentActivity",取得了activity就可以调用Android代码了(如果你在Unity导出的Eclipse工程中查看unity-class.jar这个文件中的类,你会发现com.unity3d.player这个package下就有UnityPlayer.class这个类,这个类中有个currentActivity)。这个UnlockGame函数是简单的成员方法,一般直接写在MainActivity中,也就是说Android代码中必须要有UnlockGame这个函数,然后才能调用;而"com.unity3d.player.UnityPlayer"和"currentActivity"都是默认的参数。如果要在Android工程中调用Unity3D中的方法,我们需要新建一个Android工程。可以这样写java代码:UnityPlayer.UnitySendMessage("AndroidManager", "AndroidCallBackUnlockGame", "");这里调用了Unity3D中"AndroidCallBackUnlockGame"这个方法,最终激活了游戏。第一个参数表示Unity3D中某个gameObject,第二个参数是这个gameObject上的脚本中的某个方法,第三个参数是这个方法的参数。上面只是讲述了交互的基本原理,下面是详细步骤。(1)在Unity3D中创建脚本,如上面第一段代码所示,加入调用Android函数的代码;如果Android要调用C#代码,也要写下被Android代码回调的C#函数。然后,把Unity项目导出为Android工程即可。这里需要注意下图红色部分,其中Bundle Identifier就是导出的Android工程的包名。(2)打开Eclipse,导入工程,选择import->Existing Android Code Into Workspace,最好把Copy Into WorkSpace选项也选上,这个工程通常叫做“UnityPlayerProxyActivity”。导入工程后,我们可以直接运行这个工程了。但这里是为了与Android代码交互,所以还不能这样做。通常的方法是,我们新建一个Android Application Project,包名必须与导入的工程包名相同;然后把导入的工程作为新工程的Library Project,在工程的Properties里设置(3)将导入的Unity工程assets目录里的bin和libs目录(新版的没有lib目录)拖放到新工程的assets目录里,即移动资源位置而已。说明一点,新建的Android工程作为了主工程,导入的Unity工程作为了Library Project,它们的Assets和Res资源将会最终合并在一起,但主工程必须要添加Library工程中所有需要的配置信息,也就是AndroidManifest.xml中的内容。这里还可能遇到资源ID冲突的现象,优先级高的主工程将覆盖优先级低的工程。(4)好了,现在我们有两个工程,一个是新建的,一个是从Unity3D中导入的。这里必须学点Android开发的基础知识,onCreate函数是入口函数,其它的自学吧。想在Android里调用Unity3D代码,就用本文开头的第二段代码即可。通常,我们在新工程里创建一个Activity,在AndroidManifest.xml里进行设置要启动的Activity。假设要启动的是MainActivity,那么对于MainActivity这个类,我们要让它继承UnityPlayerActivity这个类,然后在Oncreate里调用super.onCreate即可。然后,运行新工程,我们的Unity3D游戏也跟着启动了。我们的主工程是新建的,没有设置任何视图,之所以启动了游戏,是因为继承了UnityPlayerActivity这个类,然后调用super.onCreate通过父类启动了游戏。
㈤ Unity3D怎么导出android的apk
在完成整个Android工程,包括添加资源、运行测试等之后,需要导出apk包供用户使用或提交应用,那么如何操作呢?1.如下图所示,freshmanquery_ad为你建立的完整的Android工程,现在需要根据它导出apk包:2.选择工程目录,右键单击,在弹出的菜单中选择Export选项,如下图所示:3.在弹出的窗口中选择导出类型,选择Export Android Application即可,如下图所示,随后点击Next:4.随后出现导出工程检查窗口,确认导出工程是否正确,一般不会错!如下图,我们要导出的工程正是:freshmanquery_ad,点击Next:5.随后会出现安卓签名设置界面(不了解请网络),由于一般没有安卓签名,所以选择下面的标签建立签名,选择目录、设置密码(请记住)等就好,点击Next:
㈥ unity 导出安卓工程怎么编译成apk
1.Android端代码可以在Eclipse中开发(AndroidStudio没有试,应该也可以)2.Unity3D端代码要在Unity中开发3.Android和Unity3D端,两边都需要加入一些代码从而可以使之关联交互。4.将Android端代码编译成jar文件以插件形式放入到Unity端中5.在Unity中将整个项目Build成apk文件,然后安装到手机或模拟器里运行本文主要讲解1,2,3。对于4,5建议大家去看雨松MOMO的Unity博客的第17篇和第18篇。UnityPlay:在编写Android端和Unity3d端代码前,有必要先了解一下可以使两部分交互的类UnityPlay。个人理解UnityPlay是个Unity提供给外部交互的一个接口类。为什么是“个人理解”?这我不得不爆粗口了,TMD官网根本就没有相关的API和文档(如果大家有谁找到一定给我来一份,就当我骂自己了)。在关联Android时,想拿到UnityPlay以及相关类的jar包可以从下面的地址找到:Unity安装路径\Editor\Data\PlaybackEngines\androidplayer\bin在bin文件夹下有一个classes.jar的jar文件,它就是我们想要的。而在bin同目录下有一个src文件,点击到最后有3个类,分别是UnityPlayerActivity.java,UnityPlayerProxyActivity.java,UnityPlayerNativeActivity.java。前两个打开个后只有一行代码,说的是UnityPlayerActivity和UnityPlayerProxyActivity都继承自UnityPlayerNativeActivity。而打开UnityPlayerNativeActivity中居然有代码,而且我估计这应该是UnityPlayerNativeActivity的源码。由于关于UnityPlay的资料我只找到这么一个,所以我把UnityPlayerNativeActivity中的代码都贴出来,如果我注解有不对的地方希望大家指正。/*** UnityPlayerActivity,UnityPlayerProxyActivity都继承自UnityPlayerNativeActivity* 而UnityPlayerNativeActivity继承自NativeActivity* 在该类里定义了一些和ANDROID生命周期相同的回调方法,留给自定义的Activity子类重写。*/public class UnityPlayerNativeActivity extends NativeActivity{//UnityPlayer的引用,并且我们不能改变这个引用变量的名字,它被native code所引用protected UnityPlayer mUnityPlayer;protected void onCreate (Bundle savedInstanceState){requestWindowFeature(Window.FEATURE_NO_TITLE);super.onCreate(savedInstanceState);// 设置显示窗口参数getWindow().takeSurface(null);setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);getWindow().setFormat(PixelFormat.RGB_565);// 创建一个UnityPlayer对象,并赋值给全局的引用变量mUnityPlayer = new UnityPlayer(this);//为UnityPlayer设置一些参数if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);boolean trueColor8888 = false;// UnityPlayer.init()方法需要在将view附加到layout之前调用。它将会调用native codemUnityPlayer.init(glesMode, trueColor8888);// 从UnityPlayer中获取到Unity的View视图View playerView = mUnityPlayer.getView();// 将Unity视图加载到根视图上setContentView(playerView);// 使Unity视图获取焦点playerView.requestFocus();}protected void onDestroy (){// 当Activity结束的时候调用UnityPlayer.quit()方法,它会卸载之前调用的native codemUnityPlayer.quit();super.onDestroy();}// 下面几个方法都是ANDROID相关回调方法,确保在ANDROID执行相应方法时UnityPlayer也需调用相应方法protected void onPause(){super.onPause();mUnityPlayer.pause();}protected void onResume(){super.onResume();mUnityPlayer.resume();}public void onConfigurationChanged(Configuration newConfig){super.onConfigurationChanged(newConfig);mUnityPlayer.configurationChanged(newConfig);}public void onWindowFocusChanged(boolean hasFocus){super.onWindowFocusChanged(hasFocus);mUnityPlayer.windowFocusChanged(hasFocus);}public boolean dispatchKeyEvent(KeyEvent event){if (event.getAction() == KeyEvent.ACTION_MULTIPLE)return mUnityPlayer.onKeyMultiple(event.getKeyCode(), event.getRepeatCount(), event);return super.dispatchKeyEvent(event);}}
㈦ 如何给unity3d工程加入依赖的android工程
有些sdk的接入是提供jar包,这样的可以简单地将jar包制作成android plugin,加入到unity工程中,打包成apk输出。而还有一些sdk,则是提供了一个lib工程。在sdk提供的文档里说明,要在android工程中,通过添加依赖的方式来添加。但是对于unity工程,这个就有点不一样。经过多次试验,需要步骤:1. 将sdk工程整个工程目录【注1】,加到plugins/android/%sdk name%目录下2. 同时导出jar包,将jar包放置到plugins/android/libs目录中。3. 然后可以选择制作android plugin的方式,或者直接在unity3d中进行调用。【注1:具体包含的内容为:res/目录 libs/目录 assets/目录 AndroidManifest.xml .classpath project.properties .project proguard-project.txt 以及其他,依具体情况而定】说一下在试验过程中遇到的一个奇怪的现象。在上面的步骤中,如果跳过步骤2,使用unity3d直接生成apk(情况a),与导出eclipse工程,再使用ecliipse生成apk(情况b),会出现两种不一样的情况。在情况a中,若调用sdk的接口,会收到classnotfound的异常,而情况b则可以正常通过。通过查看unity工程/Temp/StagingArea/目录,猜测,unity只是对plugins/android/%sdk name%目录下的资源文件进行处理,而src目录下的java文件并不处理。