65.9K
CodeProject 正在变化。 阅读更多。
Home

开始使用CocosSharp游戏开发 for Windows Phone

starIconstarIconstarIconstarIconstarIcon

5.00/5 (6投票s)

2016年9月7日

CPOL

5分钟阅读

viewsIcon

20901

downloadIcon

142

CocosSharp for Windows Phone

引言

本文将介绍 CocosSharp 在 Windows Phone 上的应用。CocosSharp 是一个面向 C#、F# 和 .NET 开发者的 2D 游戏引擎,用于开发跨平台游戏。更多详情,请参阅此 链接

在本文中,我们将了解:

  1. 先决条件和安装步骤
  2. 如何为 Windows Phone 创建第一个 CocosSharp 项目
  3. 第一个简单的触摸趣味游戏程序

先决条件和安装步骤

  • Visual Studio 2015:您可以在 这里 下载。
  • CocosSharp 安装步骤

要将 CocosSharp 模板添加到我们的 Visual Studio 中,首先需要在“工具”选项中添加扩展。

打开 Visual Studio 2015,然后在顶部选择“工具”菜单中的“选项”。

我们将看到“选项”窗口已打开。点击“扩展和更新”。如果未添加 Mobile Essential,请点击“添加”,在名称中输入“Mobile Essential”,在 URL 中输入http://gallery.mobileessentials.org/feed.atom。点击“确定”。

下一步是下载并安装 CocosSharp 模板。

点击“工具”,从菜单中选择“扩展和更新”。

在左侧,选择“联机”->“Mobile Essential”。

现在,我们将看到 CocosSharp 模板。点击“下载”按钮。

安装 CocosSharp 模板。

安装完成后,打开“Visual Studio 2015”,点击“创建新项目”,然后从左侧的模板中选择 CocosSharp。选择您的 CocosSharp 开发平台为 Android、iOS 或 Windows。在本例中,我们将使用 Windows Phone。

如果未安装 Xamarin,请按照以下步骤安装

参考 链接

Using the Code

为 Windows Phone 创建第一个 CocosSharp 项目

安装 Visual Studio 2015 和 CocosSharp 模板后,点击“开始”>>“所有程序”>>选择“Microsoft Visual Studio 2015”>>点击“Visual Studio 2015”。点击“新建”>>“项目”>>选择“CocosSharp”>>选择“CocosSharp Game (Windows Phone)”。

选择项目文件夹,输入项目名称,然后点击“确定”。项目创建完成后,我们可以在“解决方案资源管理器”中看到 MainPage.XamlGameLayer.CS 文件。

MainPage.Xaml

默认情况下,主屏幕名称将是 Mainpage.xaml

在这里,设计页面的扩展名是可扩展应用程序标记语言 (XAML)。如果您使用过 WPF,那么处理通用应用程序会很容易,因为在 WPF 中,所有窗体文件都是 XAML 格式的。

GameLayer.CS

GameLayer 是 CocosSharp 的主类。程序将从此类开始执行,它类似于 C# 控制台应用程序中的程序类。

GameLayer() 方法

此类有一个构造方法 GameLayer()。图层的默认背景色将在 GameLayer() 方法参数中设置。我们可以根据需要进行更改。当我们创建第一个应用程序时,GameLayer() 方法将添加一个默认背景色和一个标签,如下所示。此方法类似于 ASP.NET 页面的 Init 方法。在这里,我们可以看到上面提到的代码中添加了一个 label

// Define a label variable  
        CCLabel label;  
  
        public GameLayer() : base(CCColor4B.Blue)  
        {   
            // create and initialize a Label  
            label = new CCLabel
                    ("Hello CocosSharp", "MarkerFelt", 22, CCLabelFormat.SpriteFont);  
  
            // add the label as a child to this Layer  
            AddChild(label);    
        }  

AddedToScene() 方法

此类还有另一个重写方法 AddedToScene()。在此方法中,我们为图层创建事件。例如,我们可以看到,默认情况下,此方法将通过一个用于 OnTouchesEnded 手机触摸的事件进行初始化(在普通模拟器中,它将被用作鼠标单击释放事件)。

protected override void AddedToScene()  
        {  
            base.AddedToScene();  
  
            // Use the bounds to layout the positioning of our drawable assets  
            var bounds = VisibleBoundsWorldspace;  
  
            // position the label on the center of the screen  
            label.Position = bounds.Center;  
  
            // Register for touch events  
            var touchListener = new CCEventListenerTouchAllAtOnce();  
            touchListener.OnTouchesEnded = OnTouchesEnded;  
            AddEventListener(touchListener, this);  
        } 

OnTouchesEnded() 事件

每当有人触摸手机并移开手指时,此事件都会触发。这类似于 MouseUp 事件。

void OnTouchesEnded(List<CCTouch> touches, CCEvent touchEvent)  
        {  
            if (touches.Count > 0)  
            {  
                // Perform touch handling here  
            }  
        }   

在此,默认的 GameLayer 类将如下所示

运行程序

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

运行程序时,我们可以在模拟器中看到输出。

在这里,我们可以看到图层的背景色设置为蓝色,并且标签显示在屏幕中央。

第一个简单的触摸趣味游戏程序

现在,让我们看看如何通过在图层中添加图像来创建我们简单的触摸趣味游戏程序。

点击“开始”>>“所有程序”>>选择“Microsoft Visual Studio 2015”>>点击“Visual Studio 2015”。点击“新建”>>“项目”>>选择“CocosSharp”>>选择“CocosSharp Game (Windows Phone)”。

选择项目文件夹,输入项目名称,然后点击“确定”。

添加图片

在此程序中,我们将向图层添加一个图像,并且当用户触摸 Windows Phone 或单击模拟器时,我们将使图像上下移动。为此,我们首先需要自己创建一些图像,然后将这些图像添加到我们的项目中。

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

在我们的示例程序中,我们添加了两张图片;一张是正方形,一张是球。

对于图像渲染,我们将使用 CCSprite 类。要了解更多关于 CCSprite 类的信息,请参阅此 链接

将图片添加到图层

首先,我们声明一个标签和一个 CCSprite 变量。在此示例中,我们将图层的背景色设置为白色。

我们将标签的颜色设置为 蓝色。要将图像添加到我们的 CCSprite 类中,我们将图像名称作为方法参数传递。我们将图像添加到图层,同样,我们添加了两张图像。

// Define a label variable  
        CCLabel label;  
        //Define CCSprite Variable  
        CCSprite paddleSprite;  
        CCSprite paddleSpriteball;  
        //Define boolean variable for image reach to top check  
  
        Boolean reachedtop = false;  
        public GameLayer() : base(CCColor4B.White)  
        {  
            // create and initialize a Label  
            label = new CCLabel("Welcome to Shanu CocosSharp Game for Windows", 
                                "MarkerFelt", 22, CCLabelFormat.SpriteFont);  
            label.Color = CCColor3B.Blue;  
            // add the label as a child to this Layer  
            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<CCTouch> touches, CCEvent touchEvent)  
        {  
            if (touches.Count > 0)  
            {  
                // Perform touch handling here  
                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;  
                }               
               }                 
            }  

在模拟器或 Windows Phone 上运行程序时,我们可以看到如下所示的输出。

历史

  • 2016年9月8日:初始版本
© . All rights reserved.