CocosSharp游戏开发入门教程

CocosSharp是一个为C#、F#和.NET开发者设计的2D游戏引擎,它支持跨平台游戏的开发。本文将介绍CocosSharp的安装步骤、如何创建第一个项目,以及如何编写一个简单的触摸交互游戏程序。

安装前提条件

要开始使用CocosSharp,需要安装以下软件:

  • Visual Studio 2015。

CocosSharp安装步骤

要在Visual Studio中添加CocosSharp模板,请按照以下步骤操作:

1. 打开Visual Studio 2015,从顶部的“工具”菜单中选择“选项”。

2. 在打开的选项窗口中,点击“扩展和更新”。如果没有添加Mobile Essential,请点击“添加”,在名称中输入“Mobile Essential”,在URL中输入,然后点击“确定”。

3. 接下来,下载并安装CocosSharp模板。点击“工具”,选择“扩展和更新”菜单。在左侧选择“在线”->“Mobile Essential”,然后可以看到CocosSharp模板,点击“下载”按钮。

4. 安装完成后,打开Visual Studio 2015,点击“创建新项目”,在左侧模板中选择CocosSharp。选择CocosSharp开发平台,例如Android、iOS或Windows。本文示例将使用Windows Phone

5. 如果还没有安装Xamarin,请按照进行安装。

创建第一个CocosSharp项目

安装完Visual Studio 2015和CocosSharp模板后,点击“开始”->“程序”->选择“Visual Studio 2015”->点击“Visual Studio 2015”。点击“新建”->“项目”,选择“CocosSharp”,然后选择“CocosSharp游戏(Windows Phone)”。

选择项目文件夹,给项目命名,然后点击“确定”。项目创建完成后,可以在“解决方案资源管理器”中看到“MainPage.Xaml”和“GameLayer.CS”文件。

MainPage.Xaml文件是默认的主屏幕名称,设计页面扩展为可扩展应用程序标记语言(XAML)。如果有WPF的工作经验,那么在WPF中,所有表单文件都将是XAML。

GameLayer是CocosSharp的主要类。程序将从这个类开始,这与在C#控制台应用程序中的程序类相似。

这个类有一个构造方法GameLayer()。对于层,默认的背景颜色将在GameLayer()方法的参数中设置。可以根据需要更改它。当创建第一个应用程序时,GameLayer()方法将添加一个默认的背景颜色和一个标签,如下所示。这个方法类似于ASP.NET页面的Init方法。

// 定义一个标签变量 CCLabel label; public GameLayer() : base(CCColor4B.Blue) { // 创建并初始化一个标签 label = new CCLabel( "Hello CocosSharp", "MarkerFelt", 22, CCLabelFormat.SpriteFont); // 将标签作为子项添加到这个层 AddChild(label); }

这个类还有一个重写方法AddedToScene()。在这个方法中,为层创建事件。例如,可以看到,默认情况下,这个方法将通过一个事件为OnTouchesEnded(在普通模拟器中,它将用作鼠标点击释放事件)初始化。

protected override void AddedToScene() { base.AddedToScene(); // 使用边界来布局可绘制资产的位置 var bounds = VisibleBoundsWorldspace; // 将标签定位在屏幕中心 label.Position = bounds.Center; // 注册触摸事件 var touchListener = new CCEventListenerTouchAllAtOnce(); touchListener.OnTouchesEnded = OnTouchesEnded; AddEventListener(touchListener, this); }

当有人触摸手机并从手机上移开手指时,将触发此事件。这类似于MouseUp事件。

void OnTouchesEnded(List touches, CCEvent touchEvent) { if (touches.Count > 0) { // 在这里执行触摸处理 } }

运行程序

选择模拟器以显示输出,然后点击“运行”。

当运行程序时,可以看到模拟器中的输出。在这里,可以看到层的背景颜色设置为蓝色,标签显示在屏幕的中心。

创建第一个简单的触摸和有趣的游戏程序

现在,让看看如何通过添加图像到层来创建一个简单的触摸和有趣的游戏程序。

点击“开始”->“程序”->选择“Visual Studio 2015”->点击“Visual Studio 2015”。点击“新建”->“项目”,选择“CocosSharp”,然后选择“CocosSharp游戏(Windows Phone)”。

选择项目文件夹,给项目命名,然后点击“确定”。

在这个程序中,将向层添加一个图像,当用户触摸Windows Phone或点击模拟器时,将移动图像上下移动。为此,首先将创建一些图像并将图像添加到项目中。

要添加图像,请右键单击解决方案中的“内容”文件夹。点击“添加”>选择“现有项”>选择图像并添加到内容文件夹。

在示例程序中,添加了两个图像;一个作为正方形,一个作为球。

对于图像渲染,将使用CCSprite类。要了解更多关于CCSprite类的信息,请查看。

首先,声明标签,CCSprite变量。在这个示例中,对于层,设置了白色背景。将标签颜色设置为蓝色。要将图像添加到CCSprite类,请将图像名称作为方法参数传递。添加图像到层,类似地,添加两个图像。

// 定义一个标签变量 CCLabel label; // 定义CCSprite变量 CCSprite paddleSprite; CCSprite paddleSpriteball; // 定义布尔变量以检查图像是否到达顶部 Boolean reachedtop = false; public GameLayer() : base(CCColor4B.White) { // 创建并初始化一个标签 label = new CCLabel( "Welcome to Shanu CocosSharp Game for Windows", "MarkerFelt", 22, CCLabelFormat.SpriteFont); label.Color = CCColor3B.Blue; // 将标签作为子项添加到这个层 AddChild(label); paddleSprite = new CCSprite( "squre"); paddleSprite.PositionX = 100; paddleSprite.PositionY = 100; paddleSpriteball = new CCSprite( "ball"); paddleSpriteball.PositionX = 620; paddleSpriteball.PositionY = 620; AddChild(paddleSprite); AddChild(paddleSpriteball); }

将一个图像设置在左下角,另一个图像设置在右上角。当运行时,可以看到模拟器中的输出如下。

现在,已经向层添加了图像,并且在屏幕中心添加了欢迎文本。

在触摸结束事件中,检查图像位置,并增加X值和Y值以向上移动一个图像,减少X值和Y值以向下移动另一个图像。一旦图像从顶部或底部到达,反转过程以实现图像的持续上下移动。

void OnTouchesEnded(List touches, CCEvent touchEvent) { if (touches.Count > 0) { // 在这里执行触摸处理 if (paddleSprite.PositionY > 620) { reachedtop = true; } else if (paddleSprite.PositionY < 100) { reachedtop = false; } if (reachedtop == false) { if (paddleSprite.PositionY >= 80 && paddleSprite.PositionY <= 620) { paddleSprite.PositionX = paddleSprite.PositionX + 20; paddleSprite.PositionY = paddleSprite.PositionX + 20; paddleSpriteball.PositionX = paddleSpriteball.PositionX - 20; paddleSpriteball.PositionY = paddleSpriteball.PositionX - 20; } } else { paddleSprite.PositionX = paddleSprite.PositionX - 20; paddleSprite.PositionY = paddleSprite.PositionX - 20; paddleSpriteball.PositionX = paddleSpriteball.PositionX + 20; paddleSpriteball.PositionY = paddleSpriteball.PositionX + 20; } } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485