如何用3dunity打开apk文件|unity 3d导入包后怎么使用

|

① Unity3D怎么导出android的apk

在完成整个Android工程,包括添加资源、运行测试等之后,需要导出apk包供用户使用或提交应用,那么如何操作呢?1.如下图所示,freshmanquery_ad为你建立的完整的Android工程,现在需要根据它导出apk包:2.选择工程目录,右键单击,在弹出的菜单中选择Export选项,如下图所示:3.在弹出的窗口中选择导出类型,选择Export Android Application即可,如下图所示,随后点击Next:4.随后出现导出工程检查窗口,确认导出工程是否正确,一般不会错!如下图,我们要导出的工程正是:freshmanquery_ad,点击Next:5.随后会出现安卓签名设置界面(不了解请网络),由于一般没有安卓签名,所以选择下面的标签建立签名,选择目录、设置密码(请记住)等就好,点击Next:

② unity 3d导入包后怎么使用

工具/原料Unity3D 4.3Windows 7方法/步骤如果你是第一次使用Unity3D,则可以先打开“File”》“New Project…"新建一个项目。在弹出的对话框中选择新的目录在“Project”面板中,右键点击“Assets”项,依次打开“Import Package…" -> "Custom Package…"选择你要导入的.unitypackage文件在导入unitypackage文件后,可以尝试编译运行它如果你是第一次编译,Unity3D会先弹出一个编译设置界面显然第一次编译不会那么顺利,可单击Unity3D的左下角显示编译的错误列表,如果双击的话还可以打开MonoDeveloper。本文只介绍如何导入.unitypackage文件,编译的错误将略过

③ 在Eclipse中怎么才能让一个android工程访问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);}}看完这个类后就知道了为什么在自定义的Activity中继承了UnityPlayerActivity等类以后,只要重写了onCreate并调用super.onCreate()方法后不需要任何其他的代码就会自动的显示出Unity3D的视图。因为初始化Unity视图的代码都在UnityPlayerNativeActivity父类中实现了。ANDROID端代码:在写ANDROID代码的时候,一定要导入Unity3D提供给我们的jar包,jar包的位置我在上面说了。引入jar包加入到buildpath中这些最基本的我就不多说了。要想和Unity交互,我们就不能继承ANDROID提供给我们的Activity,我们需要继承刚才jar包中引入的Unity提供的Activity类,一共有这么3个:UnityPlayerActivity,UnityPlayerProxyActivity,UnityPlayerNativeActivity。具体区别不知道,因为没有文档,没有API,没有源码(这里再次鄙视一下)。刚才我们看过UnityPlayerNativeActivity的代码(虽然很短,但我觉得这个就是源码),知道UnityPlayerActivity,UnityPlayerProxyActivity都是它的子类,而且最终父类为NativeActivity。所以我们继承Unity提供的最外层的子类是最好的选择,我这里选择的是UnityPlayerActivity,因为名字最简单,觉得该封装的都应该封装好了。public class MainActivity extends UnityPlayerActivity {private Button topButton;private Button bottomButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 设置test为我们的根布局setContentView(R.layout.test);// 通过刚才的源码分析,知道mUnityPlayer为一个全局的引用变量,而且已经在父类中设置好了,所以直接拿来用就可以了View playerView = mUnityPlayer.getView();// 将Unity的视图添加到我们为其准备的父容器中LinearLayout ll = (LinearLayout) findViewById(R.id.unityViewLyaout);ll.addView(playerView);// 上面的button设置监听器topButton = (Button) findViewById(R.id.topButton);topButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//发送消息给Unity端,该函数第一个参数为接受消息的类对象,第二个该类对象用接受消息的方法,第三个参数为传递的消息//所以下面的意思就为:调用Main Camera下面的Previous方法,传送的消息为空UnityPlayer.UnitySendMessage("Main Camera","Previous","");}});// 为下面的button设置监听器bottomButton = (Button) findViewById(R.id.bottomBtn);bottomButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//调用Main Camera下面的Next方法,传送的消息为空UnityPlayer.UnitySendMessage("Main Camera","Next","");}});}}最后看一下Android端的布局文件,布局很简单,上下各有一个button按钮,两个按钮中间是Unity的视图。<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://www.naile-cn.com"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/topButton"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:text="PREVIOUS" /><LinearLayoutandroid:id="@+id/unityViewLyaout"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@+id/bottomBtn"android:layout_below="@+id/topButton"android:orientation="horizontal" ></LinearLayout><Buttonandroid:id="@+id/bottomBtn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:text="NEXT" /></RelativeLayout>Android端的代码就介绍完了,很简单。唯一的难点就是UnityPlayerActivity和UnityPlayer的使用。

④ apk文件要怎么打开

APK是Android Package的缩写,即Android安装包(apk)。APK文件盒Symbian Sis或Sisx的文件格式差不多。通过将APK文件直接传到Android模拟器或Android手机中,然后执行并安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,这个文件的格式为apk。APK文件其实是zip格式的一个压缩包,但后缀名被修改为apk,通过UnZip解压后,我们就可以看见Dex文件,Dex是Dalvik VMexecutes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。在Android平台中dalvikvm的执行文件被打包为apk格式,最终运行时就会被加载器解压然后获取编译后的android manifest.xml文件中的permission分支相关的安全访问,但是仍然拥有很多限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。安装的文件可能不是这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。Android是现在非常流行的一个智能手机,应用也非常的多,安装方法也有很多种。下面我们大家介绍一下apk文件怎么打开和如何安装apk文件。Android系统上的软件扩展名格式都是“.apk”。如果你下载的软件是rar或者zip的话,打开该压缩包,然后我们查看一下它是不是一个apk文件结构,如果只有一个apk文件就把它解压出来,否则将该压缩文件的扩展名直接改为“.apk”。apk格式的应用我们可以去互联网下载。apk文件安装图文教程

⑤ unity项目文件打不开

一个unity只能打开一个项目,但这个项目中可以有多个场景

当然也可以多开unity或者用不同的unity版本来打开不同的项目

Android端代码可以在Eclipse中开发(AndroidStudio没有试,应该也可以)

2.Unity3D端代码要在Unity中开发

3.Android和Unity3D端,两边都需要加入一些代码从而可以使之关联交互。

4.将Android端代码编译成jar文件以插件形式放入到Unity端中

5.在Unity中将整个项目Build成apk文件,然后安装到手机或模拟器里运行

你是指的是将嵌入html页面的.unity3d文件作为独立软件运行吧?这个是不能独立运行的,如果要在单机上打开文件可以有下面几种方法:

将文件嵌入页面,如果你已经下载并安装了unitywebplayer插件,是可以离线打开页面的,如果你不想通过浏览器来看,那么这个方法可能不适合你;

用Visual Studio编写一个软件(用C#、VB、VC++各种语言都可以),在窗体中放一个WebBrowser控件,然后将WebBrowser控件的url属性设置为需要显示的页面文件(嵌入了.unity3d文件)的路径,这样看起来就是一个独立的软件了。

原理同上,安装了unitywebplayer插件后,在窗体中放一个UnityWebPlayer Control控件(要添加COM组件到工具箱),将控件的src属性设为你需要显示的.unity3d文件路径,这样也可以成为一个独立运行的软件,还可以通过组件的SendMessage方法与场景交互。效果如下:

这个是最彻底的,如果你有工程源码,重新发布成独立运行的软件就行了。


赞 (0)