unity的所有unity安卓游戏戏

10:51:55【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"unity的所有安卓游戏"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"unity的所有安卓游戏"相关的详细问题如下:RT,我想知道:unity的所有安卓游戏===========突袭网收集的解决方案如下===========
解决方案1:亡灵杀手,全球有超过一半的移动游戏开发者正在使用Unity引擎进行开发,极限摩托车。有些游戏开头会有unity的logo,血之荣耀等等在此前的统计中显示,使用它的游戏太多了,例如捣蛋猪,神庙逃亡,天天飞车,火车危机,没办法一一例举,而是由Unity Technologies开发的一个多平台的综合型游戏开发工具,但是大部分都没有,是一个全面整合的专业游戏引擎Unity并不是一个游戏公司
================可能对您有帮助================
有的通用,有的不通用。现在主流分辨率是400*800,这个分辨率的大部分都有,运行软件不单单只看分辨率,还与cpu……的其他有关===========================================但是安卓的范围有些广泛了,很多安卓手机无法玩高配置的安卓游戏,如果安卓的手机配... 安卓手机,至少也要玩起gameloft的游戏大作
如果考虑wp8,请不要后悔。(所有的游戏都...===========================================属于第一人称射击游戏,但是,该安卓游戏又和一般意义上的第一人称射击游戏有所不同... 能够很好的调动游戏的气氛,让人更加投入到游戏当中。超级华丽FPS大作 Android游戏...===========================================android的多,但是unity3d是个技术活发展潜力很高。u3d程序现在几乎能在所有平台跑.... 平庸点就android,不管学这两者哪个都能开阔自己的眼界,u3d一个游戏方向,android一个...===========================================unity引擎打造而成的,游戏的运行效果非常不错的哦。在该游戏中玩家扮演的是一个看不到的人物,看到的只有一支枪。玩家所用的枪支是可以任意更换的,最终将所有的突然来袭...===========================================今日全球上市,正式登录Google Play和AppStore。 《疾风之刃:混沌序幕》采用Unity 3D... 游戏提供场景模式、怪物波、对战模式等多种模式,另具有所有玩家均可轻松体验的自动...===========================================基于Unity3D的Android游戏添加google广告的方法——使用AdMob - 士心弘毅 - 博客园
前几天由于项目需要,要搞定在游戏中添加广告的方法,在U吧中搜到了这篇文章,
&进而获得首发出处
从该文中找到AdMob插件的出处
首先尝试了同胞的方法,折腾了大概一天时间吧,未果,老是报错,最后没办法,就想,从根上解决吧,于是开始看老外的帖子,说实话英文技术贴比小说什么的好理解多了。而且官方论坛上的讨论氛围真的很好,很多人都把自己的经验和步骤共享给了大家。借助翻译工具,大体上明白了怎么弄,但是其中关键的重新打jar包却说的并不是很清楚,虽然有几个人共享了步骤,但是是基于mac系统的,很win系统又有些区别,于是,又从帮助文档中查找了关于Plugins的说明。下面是圣典翻译后的
终于明白了plugin是个怎么回事了。又根据前面说的论坛里的回帖,连蒙带猜终于搞定,其中还和论坛上的一个老外通了几次信,别说,咱的不地道的英语人家还是懂了。
废话少说,下面就说下我的步骤。
使用AdMob,必须要把最终发布的游戏的包名改成unitypackage里的包名,但unitypackage里的包名是可以修改的。另外unitypackage里Unity中用到的只有AndroidManifest.xml,res,libs,bin是必须的,上面那篇文里也说了。
1、下载上面的unitypackage并导入Unity中,其实就是将其解压;
2、用eclipse新建工程,取名UnityAd,这个无所谓,需要注意的是package name,必须要和你最终发布的游戏一致。为后边方便activity的名字取和unitypackage中的一致,在解压后的Plugins\Android\src\org\example\AdMobTest下。
3、在工程名上右键,选择属性,导入两个包,一个是上面unitypackage目录下Android/libs里的admob-sdk-android.jar,也可以从AdMob网站上下载最新的包,另一个是Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar
4、用unitypackage中的AdMobTestActivity.java和AndroidManifest.xml覆盖android工程中的相应文件,用unitypackage中的res文件夹替换android工程的相应文件夹,最好是删了原来的拷过来,覆盖没试,为了保险吧。
5、打开AdMobTestActivity.java,找到&AdManager.setTestDevices( new String[] { "ABCDEF6" } );&改为:
final String androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID); //get Android Device Id.
AdManager.setTestDevices( new String[] { androidId } ); //Add Android ID to Admob.
&打开AndroidManifest.xml,找到&&meta-data android:value="YOUR_ID_HERE" android:name="ADMOB_PUBLISHER_ID" /&&,用自己的AdMobId替换YOUR_ID_HERE。
6、运行,run as android application。
7、运行cmd,利用cd命令转到工程bin目录下,但我的win7下的这个命令竟然无法转过去,只能转到c盘根目录,所以只能把工程目录下bin文件夹中的com文件夹拷贝到c盘,把com文件夹打为jar包。具体命令如下
将这个jar包拷贝到unity工程目录下的Assets\Plugins\Android\bin中
8、把android工程下的xml文件拷到unity工程目录下的Assets\Plugins\Android\中。如果刚才新建android工程导入的是从admob上下载的jar包,那还要将其拷到Assets\Plugins\Android\libs下,替换原来的。
最终unity工程plugins文件夹下只有AndroidManifest.xml,res\,libs\,bin\
9、和你的工程一起运行就ok了,模拟器和真机测试全部通过,最好真机,效果好。巨魔停车场
体积小,但是3D画面精美而流畅!
(责任编辑:snowlian)上一篇:
(来源:安卓网)下一篇:
热门产品推荐
分享到其他平台:
推荐理由:《乐高星战:迷你战机 LEGO Star Wars Microfighters》是一款华纳兄弟推出的街机射击游戏。游戏玩法很简单,只要注意弹幕和星球
推荐理由:Enigmo(魔法水滴)是一款安卓平台上的物理益智游戏,游戏的目的是通过使用不同的道具,来使不同的液体顺畅的流入不同的
推荐理由:《大战僵尸传奇 Legend vs Zombies》是一款僵尸类的塔防游戏,准备好保卫你的王国对抗僵尸大军,联系僵尸特点与自己的特殊技
推荐理由:《玩具实况:搏击俱乐部 Toys Alive: Fight Club》是一款好玩的格斗游戏,做工比较精美,操作上也是没什么难度,攒能量条,变
推荐理由:《突变:遗传的角斗士 Mutants: Genetic Gladiators》是一款经典的养成动作类游戏。你用你独特的心灵控制技能,让更多的遗传角[Unity3D]Unity3D游戏开发之在Android视图中嵌入Unity视图 - 推酷
[Unity3D]Unity3D游戏开发之在Android视图中嵌入Unity视图
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
喜欢我的博客请记住我的名字:
,我博客地址是
转载请注明出处,本文作者:
,本文出处:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
& &大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是
。最近博主发现博主的文章被很多的网站(如游戏蛮牛)等非法转载,在转载的过程中博主原来的文章出处和链接均被去掉,更让博主觉得生气的事情是某些人将博主的文章复制一部分以原创文章的形式发表在CSDN上,这样CSDN在根据Tag推荐相关文章的时候,就会将一部分文章连接到博主博客以外的地方,博主并不是一个小气的人,只是这些博客都是倾注了博主自己心血而写成的,如此作践难免让博主本人心寒。从今天起,博主所有的文章、配图都会加上链接,希望以此告诫那些非法转载博主文章的人懂得自重、懂得尊重博主的劳动成果。
& &好了,这些人我暂且不去理会,今天我们继续来研究Unity在Android平台上的扩展,通过昨天的学习,大家已经知道Unity和Android是可以互相调用的,可是相信大家从昨天的文章中可以看出,如果单纯地从调用Android接口的角度来看,我们已经可以实现这一目的。可是从实际开发的角度来看,我们只是迈出了很小的一步。为什么这么说呢,因为在实际的开发中可能我们不仅需要从接口上实现与Unity的对接,而且需要从界面上实现与Unity的对接。比如,现在主流的网游都会在游戏开始的时候给玩家一个选择创建角色的过程,通常界面上会显示各种类型的角色设定,玩家可以通过界面了解每种类型的角色的特点,从而选择合适自己的角色。从技术上来讲,这一部分我们可以完全使用Unity3D的GUI系统来实现,不过本文的目的在于探讨Unity和Android的对接问题,因此我们可以假定Android在整个对接过程中扮演着界面渲染的角色,而Unity则负责游戏逻辑的维护。那么,这样就诞生了我们今天的问题,能不能将Unity作为Android界面的一部分嵌入到Android应用中呢?答案当然是肯定的。
& & 一、为Unity编写Android插件
& & 首先,我们来看Unity中为Android提供的类文件UnityPlayerNativeActivity.java,该文件位于如下位置:
D:\ProgramFiles\Unity\Editor\Data\PlaybackEngines\androidplayer\com\unity3d\player (在不同的计算机上可能会有所不同,大家灵活运用即可)
package com.unity3d.
import android.app.NativeA
import android.content.res.C
import android.graphics.PixelF
import android.os.B
import android.view.KeyE
import android.view.MotionE
import android.view.V
import android.view.W
import android.view.WindowM
public class UnityPlayerNativeActivity extends NativeActivity
protected UnityPlayer mUnityP
// don't change the n referenced from native code
// Setup activity layout
@Override 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);
mUnityPlayer = new UnityPlayer(this);
if (mUnityPlayer.getSettings ().getBoolean (&hide_status_bar&, true))
getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(mUnityPlayer);
mUnityPlayer.requestFocus();
// Quit Unity
@Override protected void onDestroy ()
mUnityPlayer.quit();
super.onDestroy();
// Pause Unity
@Override protected void onPause()
super.onPause();
mUnityPlayer.pause();
// Resume Unity
@Override protected void onResume()
super.onResume();
mUnityPlayer.resume();
// This ensures the layout will be correct.
@Override public void onConfigurationChanged(Configuration newConfig)
super.onConfigurationChanged(newConfig);
mUnityPlayer.configurationChanged(newConfig);
// Notify Unity of the focus change.
@Override public void onWindowFocusChanged(boolean hasFocus)
super.onWindowFocusChanged(hasFocus);
mUnityPlayer.windowFocusChanged(hasFocus);
// For some reason the multiple keyevent type is not supported by the ndk.
// Force event injection by overriding dispatchKeyEvent().
@Override public boolean dispatchKeyEvent(KeyEvent event)
if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
return mUnityPlayer.injectEvent(event);
return super.dispatchKeyEvent(event);
// Pass any events not handled by (unfocused) views straight to UnityPlayer
@Override public boolean onKeyUp(int keyCode, KeyEvent event)
{ return mUnityPlayer.injectEvent(event); }
@Override public boolean onKeyDown(int keyCode, KeyEvent event)
{ return mUnityPlayer.injectEvent(event); }
@Override public boolean onTouchEvent(MotionEvent event)
{ return mUnityPlayer.injectEvent(event); }
/*API12*/ public boolean onGenericMotionEvent(MotionEvent event)
{ return mUnityPlayer.injectEvent(event); }
熟悉Android开发的朋友一定对这个类觉得眼熟吧,NativeActivity是Google在Android3.0后推出的,其目的是为了让开发者使用C/C++在NDK环境下管理Activity的生存周期,于是我们可以大胆的猜测Unity之所以可以和Android进行交互是因为NDK提供了方便之门,果然,博主在Unity的目录下找到了
libmain.so、libunity.so、libmono.so这三个文件,这证实我们的猜想是正确的。在这个类中,我们可以看到Unity做了大量的初始化工作,并且重写了NativeActvity的相关方法。不知道大家还记不记得我们在前一篇文章中定义主Activity时,我们是让它继承自UnityPlayerActivity而不是Android的Activity。那么,这个UnityPlayerActivity是什么呢?我们打开它的文件:
package com.unity3d.
* @deprecated Use UnityPlayerNativeActivity instead.
public class UnityPlayerActivity extends UnityPlayerNativeActivity { }
这时候我相信大家和博主一样都有一种恍然大悟的感觉,原来它是继承自
UnityPlayerNativeActivity的,换句话说Unity在Android这部分其实做了两件事,即初始化Activity和重写相关的方法。我们注意到代码中的注释提示这个类已经deprecated建议我们使用
UnityPlayerNativeActivity,这点我们暂时不用管,我们依然使用
UnityPlayerActivity,因为它和 UnityPlayerNativeActivity本质上是一样的。好了,到目前为止,如果大家已经理解了这里所有的内容,那么我们可以浩浩荡荡地冲向Eclipse开始编写Android项目了。
& & &和昨天一样,我们创建一个Android项目并将其设为库,这里我们将其包名设为com.android.unityview4android。这个名称很重要,我们在Unity中将继续使用这个名字。首先我们来创建一个Android的布局文件activity_main.xml:
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical&
tools:context=&.MainActivity& &
android:id=&@+id/BtnPre&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:layout_alignParentTop=&true&
android:text=&@string/BtnPre& /&
&LinearLayout
android:id=&@+id/UnityView&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:layout_above=&@+id/BtnNext&
android:layout_below=&@+id/BtnPre&
android:orientation=&vertical& &
&/LinearLayout&
android:id=&@+id/BtnNext&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:layout_alignParentBottom=&true&
android:text=&@string/BtnNext& /&
&/RelativeLayout&
这里我们放置了两个Button按钮,分别用来控制Unity向前、向后切换模型,在屏幕中间有一个叫做UnityView的线性布局,它将作为Unity视图的父控件,即我们会将Unity的视图放到这个控件里。我们注意到在 UnityPlayerNativeActivity.java类中有一个UnityPlayer类型的变量mUnityPlayer,该类型博主目前没有找到官方的相关说明,博主推测它应该是负责Unity界面渲染的一个类吧,在这个类中有一个getView()方法,它将返回一个View类型的值,我们便可以通过这种方法将其添加到Android视图里,因为我们已经准备好了一个UnityView的父控件,所以这一切实现起来变得相当地容易:
package com.android.unityview4
/*导入Unity提供的类*/
import com.unity3d.player.UnityP
import com.unity3d.player.UnityPlayerA
import android.os.B
import android.view.M
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.LinearL
public class MainActivity extends UnityPlayerActivity {
private Button BtnPre,BtnN
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置当前布局文件
setContentView(R.layout.activity_main);
//获取显示Unity视图的父控件
LinearLayout mParent=(LinearLayout)findViewById(R.id.UnityView);
//获取Unity视图
View mView=mUnityPlayer.getView();
//将Unity视图添加到Android视图中
mParent.addView(mView);
BtnPre=(Button)findViewById(R.id.BtnPre);
BtnPre.setOnClickListener(new OnClickListener()
public void onClick(View arg0)
UnityPlayer.UnitySendMessage(&GameObject&, &ShowPrevious&, &&);
BtnNext=(Button)findViewById(R.id.BtnNext);
BtnNext.setOnClickListener(new OnClickListener()
public void onClick(View arg0)
UnityPlayer.UnitySendMessage(&GameObject&, &ShowNext&, &&);
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
好了,这样我们就完成了Jar库的编写,我们只要将Jar库导入到Unity中,并且按照上一篇文章中所述的方法构建Android插件目录组织相关资源就可以了。最后我们给出AndroidManifest.xml文件:
&?xml version=&1.0& encoding=&utf-8&?&
&manifest xmlns:android=&/apk/res/android&
package=&com.android.unityview4android&
android:versionCode=&1&
android:versionName=&1.0& &
android:minSdkVersion=&9&
android:targetSdkVersion=&17& /&
&application
android:allowBackup=&true&
android:icon=&@drawable/ic_launcher&
android:label=&@string/app_name&
android:theme=&@style/AppTheme& &
android:name=&com.android.unityview4android.MainActivity&
android:label=&@string/app_name& &
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
&/activity&
&/application&
&/manifest&
二、创建Unity项目
好了,现在我们来创建Unity项目,我们这里创建一个简单地场景,场景中只有一个空游戏体和摄像机,我们将通过脚本的形式来控制Unity渲染,主要的脚本代码如下:
using UnityE
using System.C
public class ModelManager : MonoBehaviour {
public GameObject[] M
//当前索引
private int index=0;
//当前对象
private GameObject mO
void Start ()
this.name=&GameObject&;
//生成第一个物体
mObject=(GameObject)Instantiate(Models[index]);
public void ShowNext()
//使索引增加
//范围控制
if(index&Models.Length-1){
//销毁原来物体
Destroy(mObject);
//生成新物体
mObject=(GameObject)Instantiate(Models[index]);
public void ShowPrevious()
//使索引减少
//范围控制
if(index&0){
index=Models.Length-1;
//销毁原来物体
Destroy(mObject);
//生成新物体
mObject=(GameObject)Instantiate(Models[index]);
这段脚本我们绑定到这个空的游戏体上,脚本的两个方法ShowNext()和ShowPrevious()相对应,通过UnitySendMessage()实现通信。好了,我们来运行项目,如图所示:
我们可以注意到当程序打开的那一瞬间,是Android视图先加载、然后Unity视图才加载的,给人整体的感觉就是在Activity里面嵌套了一个Activity。可是博主马上就发现了一个问题,这Android视图中的按钮无法取得焦点啊,点击事件无效。这是为什么呢?后来博主找到的解决方法是在 AndroidManifest.xml文件中的activity子节点下增加如下两行代码:
&meta-data android:name=&android.app.lib_name& android:value=&unity& /&
&meta-data android:name=&unityplayer.ForwardNativeEventsToDalvik& android:value=&true& /& 这样问题是解决了,可是我们得搞懂为什么吧,在Unity
中,我们找到了答案:
请注意,NativeActivity在Android2.3以后被引入而且不支持该版本以下的设备。因为触摸/运动事件处理在本机代码,Java视图通常不会看到这些事件。然而,在统一转发机制允许将事件传播到DalvikVM。为了使用这个机制,您需要修改manifest文件如下:
&?xml version=&1.0& encoding=&utf-8&?&
&manifest xmlns:android=&/apk/res/android& package=&pany.product&&
&application android:icon=&@drawable/app_icon& android:label=&@string/app_name&&
&activity android:name=&.OverrideExampleNative&
android:label=&@string/app_name&&
&meta-data android:name=&android.app.lib_name& android:value=&unity& /&
&meta-data android:name=&unityplayer.ForwardNativeEventsToDalvik& android:value=&true& /&
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
&/activity&
&/application&
&/manifest&
这段话的意思就是说Android的事件是运行在本机代码中的,Java视图是看不到这些事件的,然而我们可以通过Unity提供的统一转发机制将这些事件发送到Android虚拟机,为了使用这个机制,我们必须修改Android的
AndroidManifest.xml文件。博主感觉Android插件这块官方目前做得不是很好,总是给人一种云里雾里的感觉,而且通过各种语言相互调用增加了调试的难度,关于Android更多的内容,大家可以参考官方的文档:
.好了,今天的内容就是这样啦,希望大家喜欢。最后再来看看程序运行的效果吧
每日 箴言:
这年头连梦想都是有期限的。有想法就去做,即使失败了都比没做来得好,因为失败至少给了你经验,没做只会带给你懊悔。——朱德庸
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
喜欢我的博客请记住我的名字:
,我博客地址是
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见}

我要回帖

更多关于 unity 安卓调试 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信