【AndEngine游戏开发】第一章:2.选择我们的引擎类型

在AndEngine中,我们主要使用BaseGameActivity类,但并不是所有时候都是这样。

下面的类可以作为BaseGameActivity类的替代品,其中存在一些差别。

1. The LayoutGameActivity class


LayoutGameActivity类是一个非常有用的活动类,它允许我们在一个普通的Android应用程序中合并AndEngine场景图形视图。另一方面,这个类,我们也可以包括原生的Android SDK的视图,如按钮,搜索栏,下拉框,额外的布局,或我们游戏中的任何视图。然而,使用这个类最常见的原因就是方便在游戏中植入广告。

创建一个LayoutGameActivity类需要进行一些额外的设置:
1. 在默认的布局xml文件中添加以下代码,此xml文件通常被称为main.xml。下面的代码片段添加AndEngine的RenderSurfaceView类到布局文件。将在设备上显示我们的游戏的视图:
android:id="@+id/gameSurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
2.引用布局XML文件和RenderSurfaceView。这需要重写LayoutGameActivity类中的方法。下面的代码是假设main.xml文件在res /layout/文件夹中,在这种情况下,他们可以复制​​/粘贴到我们的LayoutGameActivity类中在第一个步骤完成后:
@Override
protected int getLayoutID() {
return R.layout.main;
}
@Override
protected int getRenderSurfaceViewID() {
return R.id.gameSurfaceView;
}

2. The SimpleBaseGameActivity and SimpleLayoutGameActivity classes

SimpleBaseGameActivity和SimpleLayoutGameActivity,作为建议,使被重写的生命周期方法比较容易处理。他们并不需要我们重写onPopulateScene()方法,最重要的是,我们并不需要回调已经定义过的回调方法,当我们定义完的回调。通过这些活动,我们可以简单地添加未实现的生命周期方法,AndEngine会为我们处理的回调。
 

3. The SimpleAsyncGameActivity class

最后是SimpleAsyncGameActivity类。这个类包含了三种可供选择的生命周期方法名为onCreateResourcesAsync(),onCreateSceneAsync(),和onPopulateSceneAsync()伴随着常用的onCreateEngineOptions()方法。此Activity与其他的主要区别是,它为我们提供了加载条的“异步”的方法。下面的代码片断演示了我们如何再纹理被加载的情况下,增加进度条:
@Override
public void onCreateResourcesAsync(IProgressListener pProgressListener)
throws Exception {
// Load texture number one
pProgressListener.onProgressChanged(10);
// Load texture number two
pProgressListener.onProgressChanged(20);
// Load texture number three
pProgressListener.onProgressChanged(30);
//我们喜欢什么值,都可以设置到进度中
//每一个额外的步骤通过onCreateResourcesAsync...
}

4. 准备工作

Carry out the Know the life cycle recipe in this chapter to get a basic AndEngine project set up in our IDE, then continue on to the How to do it... section.
深入开展认识生命周期配方本章中得到一个基本的AndEngine项目设立在我们的IDE,然后继续该怎么办呢...一节。

5. 怎么做

为了让我们正确地定义一个特定的引擎对象,为我们的游戏使用,我们必须重写onCreateEngine()方法,这是AndEngine的启动过程的一部分。
为了处理引擎,将以下代码添加任何基础AndEngine活动的手动创建:
public Engine onCreateEngine(EngineOptions pEngineOptions) {
return super.onCreateEngine(pEngineOptions);
}

6. 它如何工作

以下是AndEngine对象提供的各种引擎,以及一个简短的代码片段显示如何设置的引擎对象的概述:
1. Engine:首先,这个Engine对象对于大多数游戏的开发是不理想的,因为它对帧每秒方面没有绝对任何的限制。这样就会出现在两个独立的设备上,你会发现游戏运行速度的差异。又比如说两个独立的设备观看视频,是在相同的时间开始,运行速度更快的设备是可能首先完成视频播放的,而不是两个在同一时间完成。出于这个原因,可能会出现明显的问题,尤其当物理是一个游戏的一大部分。在游戏中调用这个引擎,不需要进行额外的操作。
 
2. FixedStepEngine:这是一个理想的引擎在游戏开发中使用,因为它迫使游戏循环以恒定的速度更新。这是通过基于时间的推移来更新游戏,而不是通过以设备的能力来更快的执行代码。FixedStepEngine的构造函数需要我们提供EngineOptions对象,和一个int值。int值定义了引擎每秒运行的次数。下面的代码创建一个引擎,每秒运行60次:
@Override
public Engine onCreateEngine(EngineOptions pEngineOptions) {
return new FixedStepEngine(pEngineOptions, 60);
}

3. LimitedFPSEngine:LimitedFPSEngine引擎允许我们设置引擎每秒运行的帧数限制。这将导致引擎做一些内部的计算,如果首选的FPS之间的差异大于当前的FPS引擎实现,引擎将等待几分之一秒,然后再进行下一个更新。LimitedFPSEngine的构造函数需要两个参数,包括EngineOptions对象和一个int值,指定每秒的最大帧。下面的代码创建了一个引擎,将运行在每秒最大60帧的状态下:
public Engine onCreateEngine(EngineOptions pEngineOptions) {
// Create a limited FPS engine, which will run at a maximum of 60 FPS
return new LimitedFPSEngine(pEngineOptions, 60);
}

4.SingleSceneSplitScreenEngine和DoubleSceneSplitScreenEngine:

SingleSceneSplitScreenEngine和DoubleSceneSplitScreenEngine让我们创造一个游戏有两个独立的镜头,无论是一个单一的场景,最普遍使用的单人游戏,或在单个设备上的两个场景的多人游戏。这些只是例子,但是这两款引擎可以有广泛的用途,包括迷你地图,多角度,菜单系统,以及更多。请参阅第4章,创建一个分屏游戏,这些类型的引擎对象更具体的细节。

原文地址:

http://blog.sina.com.cn/s/blog_a26142180101a5tn.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值