2013-01-14 16:35:58 jeksonal 阅读数 20360

android手机屏幕分辨率五花八门,导致开发时不好把握,还好各个引擎对这个屏幕分辨率问题都有较好的处理方式;unity3D 也为我们提供了一个不错的解决方案。

在Unity3D 进行 android 游戏开发时,对于不同分辨率下的显示效果就像是摄像机的自动平移了一般,看了不少游戏,对于 Unity3D 开发 android 游戏貌似都没有做相应的屏幕分辨率的处理,而是随摄像机的自动移动,把场景做大些不至于出现空白背景。

其实 Unity3D 开发3D游戏,对于不同的分辨率,我们只需要设置 1 个唯一的屏幕显示区域比(说白了就是宽高比),这样显示区域就不会随分辨率的改变而拉升。

上代码:

using UnityEngine;
using System.Collections;


public class Resolution : MonoBehaviour {
    public Camera mainCamera;
    void Start()
    {
        //Screen.SetResolution(1280, 800, true, 60);
        mainCamera = Camera.mainCamera;
        //  float screenAspect = 1280 / 720;  现在android手机的主流分辨。
        //  mainCamera.aspect --->  摄像机的长宽比(宽度除以高度)
        mainCamera.aspect = 1.78f;
    }
}

把此代码脚本绑定在  MainCamera 上就OK了,这样就不会导致不同分辨率下屏幕显示区域大小不一的问题!

2014-10-25 15:58:32 qinyuanpei 阅读数 5274

       

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei

转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/article/details/40452019

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

         大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。在Unity4.3版本以后,Unity3D推出了基于Box2D的2D组件,使得Unity3D成为一个可以支持2D游戏开发的游戏引擎。在Unity3D推出这一功能之前,大家对使用Unity3D开发2D游戏已经进行了大量的研究。所以,Unity3D推出2D组件从本质上来讲并不算是一个巨大的突破,因为二维与三维的区别就在于三维比二维多了一个Z轴,如果我们将Z轴固定,那么这就是一个二维的世界。在此之前,我们普遍采用的是正交投影法,即让摄像机垂直于XY平面进行投影,这样可以利用3D引擎实现2D游戏的效果。既然现在Unity可以支持原生2D游戏开发,为什么我们不来尝试一下呢?博主之前就打算抽时间研究下Unity3D的Native2D的特性,不过因为种种原因一直没有时间来研究,那么现在正好利用这个周末来研究下吧!


       一、精灵(Sprite)与精灵图集

    虽然我们将Unity3D的2D特性成为Native2D,不过事实上Natvite只是相对于第三方插件而言的,从本质上Unity3D的2D仍然是属于3D的范畴。精灵(Sprite)是我们走进Native2D的第一个组件,所以的2D特性都是以这个组件作为基础。学习过2D游戏开发的朋友应该知道精灵其实就是我们在2D世界里一张贴图。好了,下面我们创建一个新的项目来演示如何使用Sprite组件吧!第一个让我们激动人心的特性是我们可以在创建项目的时候就决定一个项目是3D游戏还是2D游戏,如图,这里我们直接选择2D,因为我们今天要探索的是Unity3D的Native2D特性


进入Unity后我们将注意到Unity的工具栏上会出现一个2D/3D的选项按钮且在当前场景中2D按钮被激活,这意味着这是一个2D项目,通过切换该按钮我们可以发现,Unity3D的Native2D就是将Unity3D的Z轴固定以后的效果,所以从本质上来讲Unity3D的Native2D还是3D引擎在2D效果下的一种实现。


博主从爱给网上找了点素材,做了下面的这样一个场景:


我们注意到Sprite组件中有一个最重要的SpriteRenderer组件,该组件负责的是对Sprite的渲染,我们可以通过指定Sprite这个属性来指定的渲染的资源。我们选择其中的一个图片资源,可以看到其属性窗口:


其中TextureType用来指明贴图的类型,这里我们选择Sprite类型,因为只有这种类型的贴图才能提供给Sprite组件来使用。SpriteMod用来指定精灵是一张单个的图还是一系列图集,我们注意到这张图片是一个帧动画序列,所以我们应该选择Multiple类型。接下来,我们单击SpriteEditor按钮打开精灵编辑器,目的是将这些精灵图集分割成单个的图片。如果大家阅读过博主刚开始学习Unity3D时写过的文章,一定记得博主曾经用PhotoShop将一张帧动画序列图用切图的方式分割出来,再通过绘制贴图的方式来实现帧动画吧。这样是不是很麻烦啊?没关系,Unity3D的Nativie2D提供的精灵编辑器可以帮你快速地完成这一工作。我们打开精灵编辑器:


大家可以看到这里博主将这张图片分割成了16个图片。这里有一个技巧是可以通过Trim按钮获得大小一致的图块,因为精灵编辑器可以帮助你判断图形的边界。这样做的好处是Unity可以帮你生成16张个帧动画序列,从而你可以任意地调用某一帧动画,然而资源管理器中并不会生成相应的文件,这样可以节省项目资源的大小。如图:


好了,接下来,我们来编写脚本来展示如何使用这组精灵动画:

using UnityEngine;
using System.Collections;

public class SpriteScript : MonoBehaviour {

	//向上的精灵集合
	public Sprite[] UpSprites;
    //向下的精灵集合
	public Sprite[] DownSprites;
	//向左的精灵集合
	public Sprite[] LeftSprites;
	//向右的精灵集合
	public Sprite[] RightSprites;

	//上一次使用的精灵集合
	private Sprite[] lastSprites;
	//当前使用的精灵集合
	private Sprite[] currentSprites;

	//当前帧序列索引
	private int index=0;
	//每秒帧数
	private float fps=10;
	//当前经历时间
	private float currentTime=0;

	//角色当前状态
	private PlayerState state;

	//精灵渲染器
	private SpriteRenderer renderer=null;

	void Start () 
	{
		//初始化角色状态
		state=PlayerState.Idle;
		//初始化角色精灵集合
		currentSprites=UpSprites;
		lastSprites=currentSprites;
		//获取精灵渲染器
		renderer=GetComponent<SpriteRenderer>();
	}
	

	void FixedUpdate () 
	{
		if(Input.GetAxis("Horizontal")==1){
			state=PlayerState.Walk;
			SetSprites(RightSprites);
			MoveTo(new Vector2(Time.deltaTime * 2.5F,0));
		}else if(Input.GetAxis("Horizontal")==-1){
			state=PlayerState.Walk;
			SetSprites(LeftSprites);
			MoveTo(new Vector2(-Time.deltaTime * 2.5F,0));
		}else if(Input.GetAxis("Vertical")==1){
			state=PlayerState.Walk;
			SetSprites(UpSprites);
			MoveTo(new Vector2(0,Time.deltaTime * 2.5F));
		}else if(Input.GetAxis("Vertical")==-1){
			state=PlayerState.Walk;
			SetSprites(DownSprites);
			MoveTo(new Vector2(0,-Time.deltaTime * 2.5F));
		}else if(!Input.anyKey){
			state=PlayerState.Idle;
		}
		DrawSprites(currentSprites);
	}

	//角色移动
	private void MoveTo(Vector2 offest)
	{
	   //根据偏移量计算角色位置
	   float x=transform.position.x + offest.x;
	   float y=transform.position.y + offest.y;
	   //使用2D刚体组件来移动精灵
	   this.rigidbody2D.MovePosition(new Vector2(x,y));
	}

	//设置当前精灵集合
	private void SetSprites(Sprite[] sprites)
	{
		currentSprites=sprites;
	    //如果当前精灵集合和上一次使用的精灵集合不等则表明要切换精灵集合
		if(currentSprites!=lastSprites)
		{
		   lastSprites=currentSprites;
		   index=0;
		}
	}

    //绘制当前精灵集合
	private void DrawSprites(Sprite[] sprites)
	{
	  //如果角色处于站立状态则显示第一帧
	  if(state==PlayerState.Idle){
		 renderer.sprite=sprites[0];
	  }else{
		 currentTime+=Time.deltaTime;
		 //如果当前时间大于帧动画渲染时间则需要渲染新的帧动画
		 if(currentTime>1/fps){
			//使索引增加并将当前时间清零以便于重新计数
		    index+=1;
			currentTime=0;
			//使索引连续画面循环
			if(index>=sprites.Length){
			   index=0;
			}
		 }
	  }
	  //渲染
	  renderer.sprite=sprites[index];
	}
	
	#region 角色状态枚举定义#
	enum PlayerState
	{
		Walk,
		Idle
	}
	#endregion
}
那么,我们来看看实际的运行效果吧:



这是一个控制人物沿着上、下、左、右四个方向进行移动的动画效果,我们很容易就实现了。不过,我们代码似乎写了不少啊,那么有没有一种更好的方法呢?在Unity3D没有推出2D组件的时候,我们可以以贴图的形式来绘制一个Sprite,对于这种帧动画序列图片,我们可以通过offset来决定贴图上要显示的位置。不过这种方法似乎只对普通的贴图管用,对于Sprite无能为力。博主个人还是喜欢使用这种方式,毕竟有了精灵编辑器后,切图就是一件很简单的事情了。下面,我们再来给出一个通用的脚本,该脚本可以实现任何连续帧动画的循环播放,适合在游戏中表现相对玩家来说静止的效果,比如在游戏中飘扬的旗子、飞来飞去的小鸟等等:

using UnityEngine;
using System.Collections;

public class FightScript: MonoBehaviour {

	//序列帧动画集合
	public Sprite[] Animations;
	//当前帧序列索引
	private int index=0;
	//每秒帧数
	public float fps=10;
	//当前经历时间
	private float currentTime=0;
	//精灵渲染器
	private SpriteRenderer renderer;

	void Start()
	{
		//获取精灵渲染器
		renderer=GetComponent<SpriteRenderer>();
	}

	void FixedUpdate () 
	{
		DrawSprite();
	}

	//提供一个外部接口以便于随时改变动画
	public void SetAnimations(Sprite[] sprites,int index)
	{
		this.Animations=sprites;
		this.index=index;
	}

	//根据精灵集合播放动画
	void DrawSprite()
	{
		currentTime+=Time.deltaTime;
		//如果当前时间大于帧动画渲染时间则需要渲染新的帧动画
		if(currentTime>1/fps){
			//使索引增加并将当前时间清零以便于重新计数
			index+=1;
			currentTime=0;
			//使索引连续画面循环
			if(index>=Animations.Length){
				index=0;
			}
		}
	   //渲染
	   renderer.sprite=Animations[index];
	}
}
这个脚本的特点是只要指定了一系列帧动画序列,就可以让动画从某一帧开始循环播放动画。下面,我们添加两个带有攻击效果的Sprite:

怎么样?效果还不错吧,哈哈。好了,下面我们来说说精灵图集吧!大家可以注意到随着项目的持续推进,项目中使用的图片资源会越来越多,如果不注意控制的话,整个游戏的体积会越来越大。为了解决这个问题,Unity提供了精灵图集的打包制作功能Sprite Packer。所谓精灵图集呢,其实就是把分散的图片资源集中到一张图片啊,这样可以减少图片资源的容量。这其实有点类似于NGUI里面的图集啦,博主前段时间还解包了《仙剑奇侠传四》的部分资源,对于游戏中的图片资源它同样是采用这种方式进行处理的。好了,下面我们就来看看如何在Unity3D中实现精灵打包吧!首先需要在Unity中启用Sprite Packer功能:

接下来通过Window->Sprite Packer打开Sprite Packer窗口后,然后到项目资源中选择要打包的图片资源,并将其Packing Tag设为同一个名称如enemys,这样它们将会被打包在同一张图片上。

接下来我们点击Pack,就会发现这些图片被合成在一张图片上,如果我们修改任何一张图片的Packing Tag,则这张图片会从当前图集中消失。

好了,第一部分内容到此结束,大家稍作休整,我们开始本文的第二部分:2D物理世界一样美好


     二、2D物理与Box2D

     提及2D游戏引擎就不能不说Box2D。Box2D是一个用于模拟2D刚体物体的C++引擎,通常作为物理引擎被用到2D游戏引擎中,因此在很多游戏引擎中都能找到它的身影,而Unity3D的Native2D就是使用了Box2D这个引擎。关于这个引擎的细节大家可以自己去了解,总之如果游戏世界缺少了碰撞,那么游戏世界未免太无趣了吧!人生就像愤怒的小鸟,当你失败的时候总有猪在笑。该面对的我们还是要去面对,就算在现实中碰壁被撞得头破血流,可是这样的人生总是值得我们去追逐的,因为寒冷寂寞的生,终究是比不上轰轰烈烈的死。好了,闲话少叙,我们下面来一起学习下Unity3D中2D物理吧。在Unity3D中,所有与2D物理相关的组件都被放到Physics  2d这个父菜单中,因此我们可以在这里找到相关的2D物理组件。Unity中提供的2D物理组件主要有三类:刚体、碰撞体、关节。目前我们只需要关注刚体和碰撞体就可以了。估计2D物理这块很多朋友会觉得无所谓吧,大不了自己写呗。博主之前和一个朋友交流,他做的一款打击感不错ARPG手游从头到尾从来没有用过碰撞,所有的逻辑几乎都是自己写的,因为2D物理实在是简单啊,只要通过计算距离就可以了。可是作为一名有节操的程序员,在深刻理解了不重复制造轮子这一内涵后,还会执着地自己写碰撞检测吗?所以我们这里就直接使用Unity提供的2D组件了。我们首先给主角添加一个刚体Rigidbody 2D组件,并勾选Fixed Anglg这是因为我们在碰撞的过程中并不需要角度的变化。同样,我们不需要重力,所以需要将Gravity Angle设为0.如图:


接下来我们分别给场景里的主角、两个战斗角色和一个NPC添加Box Collider 2D碰撞器,并编写以下脚本来分别测试碰撞器和触发器,这里需要把握一个细节,就是如果需要物体碰撞后有力的效果,则需要给该物体增加一个刚体组件,因为力的作用是相互的。下面给出脚本:

using UnityEngine;
using System.Collections;

public class CollisionCheck : MonoBehaviour {

	void OnCollisionEnter2D(Collision2D Coll2D)
	{
		if(Coll2D.gameObject.tag=="Fight Player")
		{
			Debug.Log("请离我远一点,我正在练习绝世武功!");
		}
	}

	void OnTriggerEnter2D(Collider2D Coll2D)
	{
		if(Coll2D.gameObject.tag=="NPC Player")
		{
			Debug.Log(" 尽管我是一名NPC,但是我的戏份还是要有的!");
		}
	}
}
2D物理世界里的碰撞检测和3D物理世界里的碰撞检测基本一致,大家可以参考官方最新的API文档,因为国内翻译的API文档基本上都没有这一部分。好了,我们来看看运行效果吧!


       好啦,今天的内容就是这样了,希望大家喜欢啊,为什么每次写完博客都这么累啊?难道是因为要查阅大量的资料吗?有不懂的地方大家可以给我留言,我尽量给大家解决,还是希望大家能关注和支持博主的博客,这样博主才有勇气一直写下去。好了,就这样啦!


每日箴言:生命中所有的挫折与伤痛,所有的经历,都是为了造就你锻炼你。不要总说岁月残忍,它其实温柔了你。




-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei

转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/article/details/40452019

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


2019-05-21 16:16:42 qq_38456196 阅读数 4927

好多朋友会问,初学游戏开发应该选Cocos2d-x还是Unity3D,两者有什么区别呢?

今天我们就来聊一聊这个话题吧。

1. 哪个引擎更容易入门?

说到入门,有人可能会觉得Unity3D要简单一些,其实不是这样的,应该说Cocos2d-x入门比Unity3D简单才对。在Unity3D里拖拽出一些简单的东西很容易,当你以为自己入门了的时候,想实现一些功能的时候阻力却很大,这个时候你就会感到很迷茫。

而Cocos2d-x的入门难度不在于它本身,而在于C++。 C++不好入门,让很多人都对它望而生畏。所以说,如果把C++排除在外,Cocos2d-x的入门就相对简单了,你想要实现什么功能,看官方Demo直接把代码拷贝过来就行了。

所以, Cocos2d-x本身比Unity3D入门简单,前提是你C++学的很6。

2. 哪个引擎更强大

那当然是Unity3D了!

单说移植这一块,Unity3D基本属于一键完成,其它的什么都不用管。

而Cocos2d-x基本每一次升级版本后,移植Android平台都需要折腾一遍。

所以说,Cocos2d-x更适合技术型的人员去折腾,而Unity3D显然更适合我们去创作型的人员来使用。

再说一下这两个引擎在资源方面的支持,Unity3D的Asset Store很强大,资源非常丰富,免费的资源也不少,很多付费资源也不贵,而且已经支持用支付宝付款了。而Cocos2d-x商店里的资源加起来也就才那么几页,这是没法比的。

所以说,Unity3D更强大,这是毋庸置疑的!

3. 应该怎么学?

Cocos2d-x的教程大部分是文字教程,如果你习惯于这种学习模式,并且能把C++学好,用Cocos2d-x写游戏可能会让你觉得自己更像是一个代码开发者。

而Unity3D的教程经常要涉及到界面上的功能解释,需要不断截图,写起教程来很麻烦,所以大部分都是视频教程。当你掌握了Unity3D,用Unity3D开发游戏会让你觉得自己是一个游戏创作者。

说到Unity3D视频教程,就要提一下爪爪游戏学院(https://www.paws3d.com/)了,爪爪游戏学院(https://www.paws3d.com/)从Level1的零基础入门课程,到Level3的精通Unity引擎,企业级游戏编程技能应用课程以及游戏开发项目实战课程。他们还有每周两次的直播、答疑课程与实战作业。让我们从零开始学习Unity游戏开发,攻克爪爪游戏学院(https://www.paws3d.com/lmapv1/)专业老师精心准备的学习课程路径,成长为一个具备市场竞争力的优质开发人才,成长为一位真正的游戏开发者!

Unity学习交流群:935714213

2016-08-12 13:52:15 ios_song 阅读数 1101

Unity 2D 终结手册 (1) - 2D 项目_Unity3d 开发

这篇系列文章主要介绍 Unity 2D开发技术。包括2D/3D项目的区别、如何设置2D/3D模式、2D开发中使用到的组件等。

Unity 不止能够制作酷炫的 3D 游戏,同样也能够制作完美的2D游戏。使用Unity开发2D内容时,编辑器的大部分功能都是通用的,只不过有些功能为了简化2D开发,做了一些调整。


(图 1)Unity 2D 游戏

Scene 视图上方的工具条中,有一个明显的 2D模式按钮,点击按钮就能够在2D/3D模式间进行切换。当开启2D模式时,场景会以正交视图进行显示(3D模式下是以透视视图进行显示的),此时Scene视图的视角看起来是朝着Z轴正方向的,并且向上是Y轴正方向。在此模式下我们可以轻松地设置2D场景、操作2D对象。


(图 2)2D 模式下的 Scene 视图

当我们创建一个新的项目时,我们可以选择是以 2D 模式还是 3D模式启动。2D/3D模式决定了Unity编辑器的一些设置,比如当导入一张图片时,会把它默认作为Texture(纹理)还是Sprite(精灵)。如果我们不小心选错了模式也不要紧,在项目创建成功之后,我们依然可以在2D/3D模式之间切换。如果我们不太清楚我们的项目应该以2D模式还是以3D模式开始,我们就应该先了解一下2D/3D项目的区别。

一、完全 3D 的项目

3D 游戏通常使用三维立体几何模型,使用材质(Material)并将纹理(Texture)渲染(Render)在这些模型表面,使它们看起来像个房子、角色或其它物体,然后构成整个游戏世界。摄像机可以在场景周围自由地移动,逼真的光影投射在整个游戏世界中。3D游戏的渲染需要通过视角计算,这样一来,越靠近摄像机的物体,在屏幕上就会显示的越大。对于满足这些描述的游戏,都应该在3D模式下进行开发。


(图 3)一些完全 3D 的场景

二、正交 3D 项目

有时,游戏中会使用三维立体几何模型,但是摄像机却是正交摄像机,而不是透视摄像机。这是游戏开发中一种常用的技术,一般会以鸟瞰图的形式呈现整个场景,我们也叫它“2.5D”。如果我们需要开发这样的游戏,也应该选择3D模式,因为即使整个画面看起来没有透视效果,但我们仍然需要使用3D模型和资源。不过需要把摄像机和场景视图调整为正交。

Unity 2D 开发(1)_ 2D/3D项目_Unity3d 开发技术

(图 4)一些采用正交视图的 3D 游戏

三、完全 2D 项目

许多 2D 游戏使用的是平面图形,也叫作Sprite(精灵)。它们没有立体感,是直接绘制在屏幕上的图像,并且游戏中的摄像机没有透视的感觉。对于这种类型的项目,我们应该选择在2D模式下开始。

Unity 2D 开发(1)_ 2D/3D项目_Unity3d 开发技术

(图5)一些完全 2D 的游戏

四、使用 2D 的玩法但是采用 3D 图形的项目

在一些游戏中使用了三维立体模型,但限制游戏在两个维度上进行,只有 2D 的玩法。例如,游戏中使用的是 3D模型的障碍物、人物、场景,摄像机也是透视摄像机,但是摄像机永远只能提供一个横向滚动的视图,玩家也只能操作人物在两个维度上运动。对于这些游戏,3D只能算是一种风格,并不是游戏的功能。这种游戏也可以叫做“2.5D”。由于在开发过程中我们需要使用到3D模型,所以这类游戏同样需要选择3D模式。

Unity 2D 开发(1)_ 2D/3D项目_Unity3d 开发技术

(图 6)一个 2D 横板游戏,但是采用了 3D 图形效果

五、使用 2D 图形和玩法,但包含透视相机的项目

这也是 2D 游戏常用的一种风格,采用2D图像但使用的是透视摄像机。这种项目中,所有的图像都是平面的,但是距离摄像机的远近不同,当摄像机移动时会产生一种视差滚动的效果,比较有层次感。我们在2D模式下就能够进行开发,只是需要把Scene视图设置为3D,并且将摄像机调整为透视摄像机。


(图 7)一个完全 2D 的游戏,但是使用了透视摄像机

六、其他类型的项目

你的项目可能属于上述类型中的一种,也可能你想制作一款完全不同风格的项目,可以参考上面提到过的常见的类型,并且记住2D/3D模式是可以在项目开发过程中随时修改的。

2014-09-25 17:44:54 caoyouxing 阅读数 4396

现在手游火的一塌糊涂,引擎也是层出不穷除了引领3D市场的Unity3D,独霸2D市场的Cocos2D-X之外,还有虚幻、Sphinx等,甚至搜狐也开发了国产的Genesis-3D引擎。
其它的不多说,这里主要就对比Unity3D和Cocos2D-X,帮助大家选择。

如果你想开发一个2D游戏,有着C++/C/LUA之一的基础,那么Cocos2D-X也许比较适合你。他本身就为2D游戏设计,有着丰富的源码、实例和教程文档。你可以得到社区的大力支持。

如果你想开发一个3D或2D游戏,有着面向对象编程语言基础(比如Java、C#、AS等)。那么Unity3D会很适合你。虽然他主攻3D,但是assetstore有着丰富的插件,使得你想快速构建一个2D游戏也不是一件难事。

其实把这两个东西放在一起比,即使不严格说也是没有办法说的。Cocos2d-x是个渲染引擎,专注2D游戏(即使内部利用3D的很多技术)。而Unity是个解决方案,不单是渲染引擎,早先专注于3D应用的开发;最近因为它一个2D插件(用来帮助开发者制作2D游戏)在用户需求中还是比较强烈的,战略性的官方开始把这个插件的功能官方化(官方开始制作2D功能的模块),因此可以说由把Cocos2d-x的功能也在融合进来。这个是概念上的澄清。

基于概念回到问题,学习这两个东西,并不是两个技术的方向,而是两个游戏开发类型的方向。因为Unity如果弄得很通,Cocos2d-x就是个子集(仅负责渲染管理)。我只能说,对于刚入门的,如果你不是只想专注于2D游戏,那么,完全可以从Unity入手,理由:

1、完整的解决方案,学好一个,其他的东西上手非常快;
2、海量的学习资料;
3、没有C++的繁琐,完全可以专注于技术点的学习;

学习难度的话,我想C++如果好的话,Cocos2d-x相对小一点,涉及功能少很多,所以,相对简单;但是C++如果不会或者不好,则另当别论,而且相对入门的来说 js和c#更亲民。

那么我个人是怎么选择Unity3D和Cocos2D-X的?
我自然是选择Unity3D:
1、虽然你现在可能是做2D游戏,但如果你以后想做3D呢?用Unity3D的话从2D到3D的转换成本很低。
2、丰富的插件支持。
3、成熟的工具以及强大的编辑器拓展,让你可以很方便的定制适合自己项目需要的编辑器。
4、内置强大的性能分析工具。
5、几乎支持所有主流平台:WEB、Win、Mac、IOS、Android、XBox、PS3、Wii

6、Unity5还有更完善的光照系统、UI架构以及支持发布成Html5。可见该引擎的发展处于高速阶段。


没有更多推荐了,返回首页