免费做网站有哪些,营销传播,用什么软件做网站模板,做商城网站流程转载自 http://www.narkii.com/club/thread-320335-1.html 这段时间在研究嵌入sdk#xff0c;途中遇到不少问题和坑#xff0c;在这就不一一说了。嵌入sdk是比较常见的吧#xff0c;如接入广告啊#xff0c; 新浪的分享...... 这些都需要接入sdk的。#xff08;这些我在这…转载自 http://www.narkii.com/club/thread-320335-1.html 这段时间在研究嵌入sdk途中遇到不少问题和坑在这就不一一说了。嵌入sdk是比较常见的吧如接入广告啊 新浪的分享...... 这些都需要接入sdk的。这些我在这段时间都应以研究成功了后期会写上。现在我们从最基本的做吧。 其实这些和什么引擎都是没多大关系的。不管是 unity还是cosos2d...... 说白了这些就是和移动平台有关系。ios,androidwp8啊。 如果你不熟悉android没关系即使你是从未打开过eclipse都可以因为我把详细步骤给以图片的方式展示出来。现在我们就从最基本的做起吧。主要是实现在unity中去调android的方法。其实这个很简单只是为了从未接触过安卓的人才弄的这样详细。我以前没接触过安卓当时多么希望能有一份这样的教程教导我啊。 1. 打开eclipse新建一个安卓的工程。 在 这里要注意我们的包名和最低的sdk包名的话我们在unity中导出的时候需要用到。至于最低的sdk就是一个兼容问题了如果我们选4.0一下的 话那当我们在unity导出的时候会报错误的。我在这坑了很久很久最后才发现一系列的错误是这个因起来的。最好是要在32位的sdk,jdk中进行 吧这样会少很多莫名的错误问题 注意的就是我在下图圈起来的地方。 我们一直狂点下一步当我们看见这个时就是最后一步了。 如果大家都没错创建的新工程就是如下一样了。我圈起来的地方多是会用到了需要注意的地方。 2.现在我们安卓工程创建好了就到了开始编写的时候了。我们打开unity的安装目录 例如D:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\bin找到class.jar 。 这个是unity帮我们封装好了的jar包我们要用到该包。 然后我们将class.jar放进我们的安卓工程去。直接拖进libs目录就可以。如图 现在我们来引用下吧选中它右键.......... 如下 3. 好了现在我们把重要的都加进来了那我们现在就来做个简单的实验就是点击unity中德按钮打开一个安卓的ACtivity吧。我们首先要做的就是 把这个Activity布局。我们在res--layout文件夹下找到activity_main打开加入这些内容 Xml代码 ?xml version1.0 encodingutf-8? ScrollView xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools android:idid/container android:layout_widthmatch_parent android:layout_heightmatch_parent tools:contextcom.ITFFuture.testua.MainActivity tools:ignoreMergeRootFrame LinearLayout android:orientationvertical android:layout_widthmatch_parent android:layout_heightwrap_content TextView android:idid/textView0 android:layout_widthfill_parent android:layout_heightwrap_content android:textColor#000000 android:textSize18sp android:background#00FF00 android:text测试Unity和Android之间额通讯 android:gravitycenter_vertical|center_horizontal / TextView android:idid/textView1 android:layout_widthfill_parent android:layout_heightwrap_content android:textColor#FFFFFF android:textSize18sp android:background#0000FF android:text大家好我是安卓的Activity android:gravitycenter_vertical|center_horizontal / Button android:idid/button0 android:layout_widthfill_parent android:layout_heightwrap_content android:text关闭这个Activity/ /LinearLayout /ScrollView 我们的内容转成实际界面是这样的样子。 现在我们来新建一个Class,取名为OpenActivity1如图 然后我们接入代码代码内容如下 Java代码 package com.ITFFuture.testua; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class OpenActivity1 extends Activity { Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView text (TextView)this.findViewById(R.id.textView1); text.setText(this.getIntent().getStringExtra(name)); Button close (Button)this.findViewById(R.id.button0); close.setOnClickListener(new OnClickListener() { public void onClick(View v) { OpenActivity1.this.finish(); } }); } } 这个代码很简单,改变中间的字母内容是点击关闭按钮关闭此Activity.最终效果如下 好了现在我们在MainActivity中谢方法吧这个Activity就相当于第一个场景。 MainActivity的内容 Java代码 package com.ITFFuture.testua; import com.unity3d.player.UnityPlayerActivity; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.content.Intent; public class MainActivity extends UnityPlayerActivity { Activity mActivitynull; Context mContext null; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mActivitythis; mContext this; StartActivity1(我是通过安卓中显示的Activity); } public void StartActivity1(String name) { // TODO Auto-generated method stub Intent intent new Intent(mContext,OpenActivity1.class); intent.putExtra(name, name); mActivity.startActivity(intent); } } 还有最后一点要配置AndroidManifest.xml.声明我们定义的Activity. Xml代码 ?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/android packagecom.ITFFuture.testua android:versionCode1 android:versionName1.0 uses-sdk android:minSdkVersion8 android:targetSdkVersion18 / application android:allowBackuptrue android:icondrawable/ic_launcher android:labelstring/app_name android:themestyle/AppTheme activity android:namecom.ITFFuture.testua.MainActivity android:labelstring/app_name intent-filter action android:nameandroid.intent.action.MAIN / category android:nameandroid.intent.category.LAUNCHER / /intent-filter /activity activity android:themeandroid:style/Theme.NoTitleBar.Fullscreen android:name.OpenActivity1 /activity /application /manifest 我们主要是声明了我们自己的Avtivity,这个很重要在后期加入广告啊新浪微博分享爱啊.... 好了那我们最终来导出jar包吧。在导出之前还是先刷新下(F5),和Build 下Project. 我们现在来导出吧。 现在我们的jar包已经成功导出了。是这样子的我们在安卓中的所有操作也就完成了哈现在接下来的就是如何和unity进行互通了。 上面导出的jar文件Test.jar如果用解压软件打开会发现除了class文件还有项目中的资源文件、lib库这样虽然这个jar文件在unity中可以使用但增大了文件大小因此可以用下面的方法来导出一个纯净的jar文件只含有class文件。 代码所有的.class文件都生成在了Android工程的bin文件夹中当前工程的路径是 TestUA-bin-classes-com-ITFFuture-testua-你的.class文件。下面需 要对这些.class文件进行打包苹果系统的话打开电脑的终端cd到classes文件夹的目录下接着执行代码 Python代码 jar -cvf Test.jar * 这行代码的意思是把当前目录下的所有.class文件打包成.jar文件保存文件名称为Test.jar。你可以再解压看看可以看到厘米只有class文件。 3.从unity中去调用 在 unity中我们新建一个Plugins文件夹Plugins下面又建Android文件夹Android文件夹下再建一个bin文件夹我们将我 们导出的jar包放进这个文件夹下然后我们在eclipse中的res文件复制一份放入Android。也要把AndroidManifest.xml 放进Android目录下。详细情况如下 现在我们新建一个脚本吧。用来调用安卓中那个StartActivity1方法。 C#代码 using UnityEngine; using System.Collections; public class js001 : MonoBehaviour { private AndroidJavaObject m_activity; // Use this for initialization void Start () { AndroidJavaClass jc new AndroidJavaClass (com.unity3d.player.UnityPlayer); m_activity jc.GetStaticAndroidJavaObject (currentActivity); } void OnGUI(){ //call hello world if(GUI.Button(new Rect(50,50,200,40),Open Activity)){ m_activity.Call(StartActivity1,Unity中调出android的方法了); } //quit if(Input.GetKey(KeyCode.Escape)||Input.GetKey(KeyCode.Home)){ Application.Quit(); } } // Update is called once per frame void Update () { } } 最后我们导出apk吧。在其中要设置一项。就是包名。这个要和安卓工程的包名一模一样哦。 然后我们运行下吧。 在刚开始的时候我们会看安卓中德Activity然后我们点击关闭按钮就能看那Unity的Scene了。这个是我们点击Open Activity这个按钮时候安卓中的Activity又被我们打开了。 好了测试成功 遇到的问题 1. U3D导出安卓版本总会出现Unable to find unity activity in manifest. You need to make sure orientation attribut is set to portrait manually. 2. U3D打包安卓版本如果闪退 解决方法在AndroidManifest.xml加入一行参数就可以了。 Xml代码 meta-data android:nameunityplayer.UnityActivity android:valuetrue / 参数位置如下图 转载于:https://www.cnblogs.com/Yellow0-0River/p/4238341.html