Xamarin.Forms에서 CocosSharp 사용Using CocosSharp in Xamarin.Forms

[샘플 다운로드 샘플 다운로드](h https://github.com/xamarin/xamarin-forms-samples/tree/master/CocosSharpForms)Download Sample Download the sample

CocosSharp는 사용 하 여 고급 시각화에 대 한 응용 프로그램에 정확한 도형, 이미지 및 텍스트 렌더링을 추가할 수 있습니다.CocosSharp can be used to add precise shape, image, and text rendering to an application for advanced visualization

Evolve 2016: Xamarin.iosEvolve 2016: Cocos# in Xamarin.Forms

개요Overview

CocosSharp는 그래픽 표시, 터치 입력을 읽고, 오디오 및 관리 콘텐츠를 재생 하기 위한 유연 하 고 강력한 기술 됩니다.CocosSharp is a flexible, powerful technology for displaying graphics, reading touch input, playing audio, and managing content. 이 가이드에서는 CocosSharp Xamarin.Forms 응용 프로그램을 추가 하는 방법을 설명 합니다.This guide explains how to add CocosSharp to a Xamarin.Forms application. 다음 내용을 다룹니다.It covers the following:

CocosSharp 란?What is CocosSharp?

CocosSharp 는 Xamarin 플랫폼에서 사용할 수 있는 오픈 소스 게임 엔진입니다.CocosSharp is an open source game engine that is available on the Xamarin platform. CocosSharp는 다음과 같은 기능을 포함 하는 효율적인 런타임 라이브러리:CocosSharp is a runtime-efficient library which includes the following features:

  • 클래스를 CCSprite 사용 하 여 이미지 렌더링Image rendering using the CCSprite class
  • 클래스를 CCDrawNode 사용 하 여 셰이프 렌더링Shape rendering using the CCDrawNode class
  • 클래스를 사용 하는 CCNode.Schedule 모든 프레임 논리Every-frame logic using the CCNode.Schedule class
  • 콘텐츠 관리 (. .png 파일 등의 리소스 로드 및 언로드)를 사용 하 여CCTextureCacheContent management (loading and unloading of resources such as .png files) using the CCTextureCache
  • 클래스를 사용 CCAction 하는 애니메이션Animations using the CCAction class

CocosSharp의 주된 초점은 플랫폼 간 2D 게임;의 생성을 간소화 하는 그러나 Xamarin 양식 응용 프로그램에 크게 보강할 수도 있습니다.CocosSharp’s primary focus is to simplify the creation of cross-platform 2D games; however, it can also be a great addition to Xamarin Form applications. 게임에는 일반적으로 효율적인 렌더링 및 시각적 개체를 정확 하 게 제어할 필요, CocosSharp 게임 내 응용 프로그램에 강력한 시각화 및 효과 추가 하려면 사용할 수 있습니다.Since games typically require efficient rendering and precise control over visuals, CocosSharp can be used to add powerful visualization and effects to non-game applications.

Xamarin.Forms는 네이티브 플랫폼 특정 UI 시스템을 기반으로 합니다.Xamarin.Forms is built upon native, platform-specific UI systems. 예를 들어 Buttons iOS 및 Android에서 다르게 표시 되 고 운영 체제 버전에도 다를 수 있습니다.For example, Buttons appear differently on iOS and Android, and may even differ by operating system version. 반면 CocosSharp 사용 하지 않으므로 모든 플랫폼별 시각적 개체를 모든 시각적 개체는 모든 플랫폼에서 동일 하 게 나타납니다.By contrast, CocosSharp does not use any platform-specific visual objects, so all visual objects appear identical on all platforms. 물론 장치 간에 다를 확인 및 가로 세로 비율 및 CocosSharp 해당 시각적 개체를 렌더링 하는 방법에 영향을이 수 있습니다.Of course, resolution and aspect ratio differ between devices, and this can impact how CocosSharp renders its visuals. 이 가이드의 뒷부분에서 이러한 세부 정보를 설명 합니다.These details will be discussed later in this guide.

자세한 정보를 찾을 수 있습니다 합니다 CocosSharp 섹션합니다.More detailed information can be found in the CocosSharp section.

CocosSharp Nuget 패키지 추가Adding the CocosSharp Nuget packages

CocosSharp를 사용 하기 전에 개발자는 Xamarin.Forms 프로젝트에 대 한 몇 가지 추가 확인 해야 합니다.Before using CocosSharp, developers need to make a few additions to their Xamarin.Forms project. 이 가이드에서는 iOS, Android 및.NET Standard를 사용 하 여 Xamarin.Forms 프로젝트 가정 라이브러리 프로젝트.This guide assumes a Xamarin.Forms project with an iOS, Android, and .NET Standard library project. 코드의 모든.NET Standard 라이브러리 프로젝트에 기록 됩니다. 그러나 라이브러리는 iOS 및 Android 프로젝트에 추가 되어야 합니다.All of the code will be written in the .NET Standard library project; however, libraries must be added to the iOS and Android projects.

CocosSharp Nuget 패키지는 모든 CocosSharp 개체를 만드는 데 필요한 개체를 포함 합니다.The CocosSharp Nuget package contains all of the objects needed to create CocosSharp objects. CocosSharp.Forms nuget 패키지에 포함 된 CocosSharpView Xamarin.Forms에서 CocosSharp 호스팅하는 데 사용 하는 클래스입니다.The CocosSharp.Forms nuget package includes the CocosSharpView class, which is used to host CocosSharp in Xamarin.Forms. 추가 된 CocosSharp.Forms NuGet 및 CocosSharp 도 자동으로 추가 될 예정입니다.Add the CocosSharp.Forms NuGet and CocosSharp will be automatically added as well. 이렇게 하려면 마우스 오른쪽 단추로 클릭 합니다 패키지 선택한.NET Standard 라이브러리 프로젝트 폴더 패키지 추가... . 검색 용어를 입력 CocosSharp.Forms를 선택 Xamarin.Forms 용 CocosSharp, 클릭 패키지 추가합니다.To do this, right-click on the Packages folder in the .NET Standard library project and select Add Packages.... Enter the search term CocosSharp.Forms, select CocosSharp for Xamarin.Forms, then click Add Package.

둘 다 CocosSharp 하 고 CocosSharp.Forms NuGet 패키지를 프로젝트에 추가 됩니다.Both CocosSharp and CocosSharp.Forms NuGet packages will be added to the project:

플랫폼별 프로젝트 (예: iOS 및 Android)에 대해 위의 단계를 반복 합니다.Repeat the above steps for platform-specific projects (such as iOS and Android).

연습: Xamarin. Forms 앱에 CocosSharp 추가Walkthrough: Adding CocosSharp to a Xamarin.Forms app

Xamarin.Forms 앱에 간단한 CocosSharp 뷰를 추가 하려면 다음이 단계를 수행 합니다.Follow these steps to add a simple CocosSharp view to a Xamarin.Forms app:

  1. 만들기는 Xamarin Forms 페이지Creating a Xamarin Forms Page
  2. CocosSharpView 추가Adding a CocosSharpView
  3. GameScene 만들기Creating the GameScene
  4. 원 추가Adding a Circle
  5. CocosSharp 상호 작용Interacting with CocosSharp

Xamarin.Forms 앱에 CocosSharp 뷰를 성공적으로 추가한 후 방문 합니다 CocosSharp 설명서 CocosSharp로 콘텐츠를 만들기에 대해 자세히 알아보려면 합니다.Once you've successfully added a CocosSharp view to a Xamarin.Forms app, visit the CocosSharp documentation to learn more about creating content with CocosSharp.

1. 만들기는 Xamarin Forms 페이지1. Creating a Xamarin Forms Page

Xamarin.Forms는 모든 컨테이너에서 CocosSharp는 호스팅할 수 있습니다.CocosSharp can be hosted in any Xamarin.Forms container. 이 페이지에 대 한이 샘플에서는 라는 페이지 HomePage합니다.This sample for this page uses a page called HomePage. HomePage 절반으로 분할 됩니다는 Grid Xamarin.Forms 및 CocosSharp 수 렌더링 되는 방식을 동시에 동일한 페이지에 표시 합니다.HomePage is split in half by a Grid to show how Xamarin.Forms and CocosSharp can be rendered simultaneously on the same page.

포함 하도록 페이지를 먼저 설정 된 Grid 두 개의 Button 인스턴스:First, set up the Page so it contains a Grid and two Button instances:

public class HomePage : ContentPage
{
public HomePage ()
    {
        // This is the top-level grid, which will split our page in half
        var grid = new Grid ();
        this.Content = grid;
        grid.RowDefinitions = new RowDefinitionCollection {
            // Each half will be the same size:
            new RowDefinition{ Height = new GridLength(1, GridUnitType.Star)},
            new RowDefinition{ Height = new GridLength(1, GridUnitType.Star)},
        };
        CreateTopHalf (grid);
        CreateBottomHalf (grid);
    }
    void CreateTopHalf(Grid grid)
    {
        // We'll be adding our CocosSharpView here:
    }
    void CreateBottomHalf(Grid grid)
    {
        // We'll use a StackLayout to organize our buttons
        var stackLayout = new StackLayout();
        // The first button will move the circle to the left when it is clicked:
        var moveLeftButton = new Button {
            Text = "Move Circle Left"
        };
        stackLayout.Children.Add (moveLeftButton);

        // The second button will move the circle to the right when clicked:
        var moveCircleRight = new Button {
            Text = "Move Circle Right"
        };
        stackLayout.Children.Add (moveCircleRight);
        // The stack layout will be in the bottom half (row 1):

        grid.Children.Add (stackLayout, 0, 1);
    }
}

Ios의 경우는 HomePage 다음 이미지와 같이 표시 됩니다.On iOS, the HomePage appears as shown in the following image:

2. CocosSharpView 추가2. Adding a CocosSharpView

CocosSharpView 클래스 CocosSharp Xamarin.Forms 앱에 포함 하는 데 사용 됩니다.The CocosSharpView class is used to embed CocosSharp into a Xamarin.Forms app. 이후 CocosSharpView 에서 상속 되는 Xamarin.Forms.View 클래스 레이아웃에 대 한 친숙 한 인터페이스를 제공 하 고 같은 레이아웃 컨테이너 내에서 사용할 수 있습니다 Xamarin.Forms.Grid합니다.Since CocosSharpView inherits from the Xamarin.Forms.View class, it provides a familiar interface for layout, and it can be used within layout containers such as Xamarin.Forms.Grid. CocosSharpView 를 완료 하 여 프로젝트에는 CreateTopHalf 메서드:Add a new CocosSharpView to the project by completing the CreateTopHalf method:

void CreateTopHalf(Grid grid)
{
    // This hosts our game view.
    var gameView = new CocosSharpView () {
        // Notice it has the same properties as other XamarinForms Views
        HorizontalOptions = LayoutOptions.FillAndExpand,
        VerticalOptions = LayoutOptions.FillAndExpand,
        // This gets called after CocosSharp starts up:
        ViewCreated = HandleViewCreated
    };
    // We'll add it to the top half (row 0)
    grid.Children.Add (gameView, 0, 0);
}

CocosSharp 초기화가 즉시 없으므로 시기에 대 한 이벤트를 등록 합니다 CocosSharpView 생성을 완료 합니다.CocosSharp initialization is not immediate, so register an event for when the CocosSharpView has finished its creation. 이 작업을 수행 합니다 HandleViewCreated 메서드:Do this in the HandleViewCreated method:

void HandleViewCreated (object sender, EventArgs e)
{
    var gameView = sender as CCGameView;
    if (gameView != null)
    {
        // This sets the game "world" resolution to 100x100:
        gameView.DesignResolution = new CCSizeI (100, 100);
        // GameScene is the root of the CocosSharp rendering hierarchy:
        gameScene = new GameScene (gameView);
        // Starts CocosSharp:
        gameView.RunWithScene (gameScene);
    }
}

HandleViewCreated 메서드가에서 기대 하에서는 두 가지 중요 한 세부 정보입니다.The HandleViewCreated method has two important details that we’ll be looking at. 첫 번째는 GameScene 클래스를 다음 섹션에 생성 됩니다.The first is the GameScene class, which will be created in the next section. 것에 앱이 될 때까지 컴파일되지 것입니다 유의 해야 합니다 GameScene 만들어집니다 및 gameScene 인스턴스 참조 해결 됨.It’s important to note that the app will not compile until the GameScene is created and the gameScene instance reference is resolved.

두 번째 중요 한 세부 정보는는 DesignResolution CocosSharp 개체에 대 한 게임의 표시 영역을 정의 하는 속성입니다.The second important detail is the DesignResolution property, which defines the game’s visible area for CocosSharp objects. 합니다 DesignResolution 만든 후 속성에서 찾을 GameScene합니다.The DesignResolution property will be looked at after creating GameScene.

3. GameScene 만들기3. Creating the GameScene

합니다 GameScene CocosSharp의에서 클래스 상속 CCScene합니다.The GameScene class inherits from CocosSharp’s CCScene. GameScene CocosSharp를 통한 순수 하 게 처리할 경우 첫 번째 지점이입니다.GameScene is the first point where we deal purely with CocosSharp. 에 포함 된 코드 GameScene 여부 Xamarin.Forms 프로젝트 내에서 저장 하는지 여부를 CocosSharp 앱에서 작동 합니다.Code contained in GameScene will function in any CocosSharp app, whether it is housed within a Xamarin.Forms project or not.

CCScene 클래스는 visual 루트 모든 CocosSharp 렌더링입니다.The CCScene class is the visual root of all CocosSharp rendering. 표시 되는 CocosSharp 개체에 포함 되어야 합니다는 CCScene합니다.Any visible CocosSharp object must be contained within a CCScene. 시각적 개체에 추가 해야 더 정확히 말하면 CCLayer 인스턴스 및 해당 CCLayer 인스턴스를 추가 해야 합니다는 CCScene합니다.More specifically, visual objects must be added to CCLayer instances, and those CCLayer instances must be added to a CCScene.

다음 그래프는 일반적인 CocosSharp 계층 구조를 시각화 하는 데 도움이 됩니다.The following graph can help visualize a typical CocosSharp hierarchy:

하나의 CCScene 한 번에 활성화 될 수 있습니다.Only one CCScene can be active at one time. 대부분의 게임 사용 하 여 CCLayer 내용 정렬 하지만 응용 프로그램 인스턴스 하나만 사용 합니다.Most games use multiple CCLayer instances to sort content, but our application uses only one. 마찬가지로 대부분의 게임 여러 시각적 개체를 사용 하지만 우리는 앱에만 해야 합니다.Similarly, most games use multiple visual objects, but we’ll only have one in our app. 시각적 계층에서 찾을 수 있습니다 CocosSharp에 대 한 논의 자세한 합니다 BouncingGame 연습합니다.A more detailed discussion about the CocosSharp visual hierarchy can be found in the BouncingGame walkthrough.

처음에 GameScene 클래스는 거의 비어 있게 됩니다 – 방금 만들어에 대 한 참조를 충족 시키기 위해 HomePage합니다.Initially the GameScene class will be nearly empty – we’ll just create it to satisfy the reference in HomePage. 새 클래스 라는.NET Standard 라이브러리 프로젝트에 추가할 GameScene합니다.Add a new class to your .NET Standard library project named GameScene. 상속 해야 합니다 CCScene 다음과 같이 클래스:It should inherit from the CCScene class as follows:

public class GameScene : CCScene
{
    public GameScene (CCGameView gameView) : base(gameView)
    {

    }
}

이제 GameScene 는 정의 돌아갈 수 있습니다 HomePage 필드를 추가 합니다.Now that GameScene is defined, we can return to HomePage and add a field:

// Keep the GameScene at class scope
// so the button click events can access it:
GameScene gameScene;

이제 프로젝트를 컴파일 및 실행 CocosSharp을 실행 수 했습니다.We can now compile our project and run it to see CocosSharp running. 에 아무 것도 추가 하지 않은 것이 GameScene, 페이지의 위쪽 절반 검정-CocosSharp 장면의 기본 색은:We haven’t added anything to our GameScene, so the top half of our page is black – the default color of a CocosSharp scene:

4. 원 추가4. Adding a Circle

앱은 현재 비어 있는 표시 CocosSharp 엔진의 실행 중인 인스턴스에 CCScene입니다.The app currently has a running instance of the CocosSharp engine, displaying an empty CCScene. 그런 다음 시각적 개체 추가: 원입니다.Next, we’ll add a visual object: a circle. 합니다 CCDrawNode 에 설명 된 대로 다양 한 기 하 도형에 그릴 클래스를 사용할 수 있습니다 합니다 CCDrawNode 가이드를 사용 하 여 기 하 도형 그리기합니다.The CCDrawNode class can be used to draw a variety of geometric shapes, as outlined in the Drawing Geometry with CCDrawNode guide.

에 원을 추가 우리의 GameScene 클래스 및 다음 코드와 같이 생성자에서 인스턴스화할:Add a circle to our GameScene class and instantiate it in the constructor as shown in the following code:

public class GameScene : CCScene
{
    CCDrawNode circle;
    public GameScene (CCGameView gameView) : base(gameView)
    {
        var layer = new CCLayer ();
        this.AddLayer (layer);
        circle = new CCDrawNode ();
        layer.AddChild (circle);
        circle.DrawCircle (
            // The center to use when drawing the circle,
            // relative to the CCDrawNode:
            new CCPoint (0, 0),
            radius:15,
            color:CCColor4B.White);
        circle.PositionX = 20;
        circle.PositionY = 50;
    }
}

이제 앱을 실행 하는 원 CocosSharp 표시 영역의 왼쪽에 보여 줍니다.Running the app now shows a circle on the left side of the CocosSharp display area:

DesignResolution 이해Understanding DesignResolution

CocosSharp 시각적 개체 표시 되는 이제 조사할 수 있습니다는 DesignResolution 속성입니다.Now that a visual CocosSharp object is displayed, we can investigate the DesignResolution property.

DesignResolution 배치 및 개체 크기 조정에 대 한 CocosSharp 영역의 높이 너비를 나타냅니다.The DesignResolution represents the width and height of the CocosSharp area for placing and sizing objects. 영역의 실제 해상도 측정 됩니다 픽셀 하는 동안 합니다 DesignResolution 환경에서 측정 됩니다 단위합니다.The actual resolution of the area is measured in pixels while the DesignResolution is measured in world units. 다음 다이어그램은 다양 한 부분 640 x 1136 픽셀의 화면 해상도 사용 하 여 iPhone 5에 표시 된 뷰 확인을 보여줍니다.The following diagram shows the resolution of various parts of the view as displayed on an iPhone 5 with a screen resolution of 640x1136 pixels:

위의 다이어그램 검은색 텍스트로 화면 외부의 픽셀 크기를 표시합니다.The diagram above displays pixel dimensions on the outside of the screen in black text. 단위는 흰색 텍스트의 다이어그램의 내부에 표시 됩니다.Units are displayed on the inside of the diagram in white text. 위에 표시 된 몇 가지 중요 한 세부 정보는 다음과 같습니다.Here are some important details displayed above:

  • CocosSharp 디스플레이의 원점은 왼쪽 맨 아래에 있습니다.The origin of the CocosSharp display is at the bottom left. X 값 증가 오른쪽으로 이동 하 고 Y 값을 증가 위로 이동 됩니다.Moving to the right increases the X value, and moving up increases the Y value. 일부 다른 2D 레이아웃 엔진에 비해으로 Y 값을 반전 됩니다 표시 위치 (0, 0) 캔버스의 왼쪽 위입니다.Notice that the Y value is inverted compared to some other 2D layout engines, where (0,0) is the top-left of the canvas.
  • CocosSharp의 기본 동작은 해당 보기의 가로 세로 비율을 유지 하는 것입니다.The default behavior of CocosSharp is to maintain the aspect ratio of its view. 표의 첫 번째 행 높이 것 보다 더 광범위 한 이므로 CocosSharp 채워지지 해당 셀의 전체 너비 점선된 흰색 사각형으로 표시 된 것과 같이 합니다.Since the first row in the grid is wider than it is tall, CocosSharp does not fill the entire width of its cell, as shown by the dotted white rectangle. 이 동작에 설명 된 대로 변경할 수는 CocosSharp에서 여러 해상도 처리 가이드합니다.This behavior can be changed, as described in the Handling Multiple Resolutions in CocosSharp guide.
  • 이 예제에서는 CocosSharp 표시 영역의 너비와 높이 크기에 관계 없이 100 단위 또는 해당 장치의 가로 세로 비율을 유지 합니다.In this example, CocosSharp will maintain a display area of 100 units wide and tall regardless of the size or aspect ratio of its device. 즉, 코드는는 CocosSharp의 오른쪽 끝 바인딩된 X = 100 나타냅니다 레이아웃을 표시, 보관 모든 장치에서 일관 된 가정할 수 있습니다.This means that code can assume that X=100 represents the far-right bound of the CocosSharp display, keeping layout consistent on all devices.

CCDrawNode 세부 정보CCDrawNode Details

이 간단한 앱 사용을 CCDrawNode 원을 그리려면 클래스입니다.Our simple app uses the CCDrawNode class to draw a circle. 이 클래스는 기 하 도형 벡터 기반 렌더링 – Xamarin.Forms에서 누락 된 기능을 제공 하므로 비즈니스 앱에 대 한 매우 유용할 수 있습니다.This class can be very useful for business apps since it provides vector-based geometry rendering – a feature missing from Xamarin.Forms. 원 외에도 CCDrawNode 를 그릴 사각형, 스플라인, 선 및 다각형을 사용자 지정 클래스를 사용할 수 있습니다.In addition to circles, the CCDrawNode class can be used to draw rectangles, splines, lines, and custom polygons. CCDrawNode 이미지 파일 (예:.png) 사용 하지 않아도 되므로 사용 하기 쉬운도 합니다.CCDrawNode is also easy to use since it does not require the use of image files (such as .png). 자세한 설명은 CCDrawNode에서 찾을 수 있습니다 합니다 CCDrawNode 가이드를 사용 하 여 기 하 도형 그리기합니다.A more detailed discussion of CCDrawNode can be found in the Drawing Geometry with CCDrawNode guide.

5. CocosSharp 상호 작용5. Interacting with CocosSharp

CocosSharp 시각적 요소 (같은 CCDrawNode)에서 상속 된 CCNode 클래스입니다.CocosSharp visual elements (such as CCDrawNode) inherit from the CCNode class. CCNode 부모를 기준으로 개체를 배치에 사용할 수 있는 두 개 속성도 제공 합니다. PositionXPositionY입니다.CCNode provides two properties which can be used to position an object relative to its parent: PositionX and PositionY. 이 코드 조각에 나와 있는 것 처럼 코드는 원의 중심을 배치 하려면 이러한 두 속성을 사용 하는 현재:Our code currently uses these two properties to position the center of the circle, as shown in this code snippet:

circle.PositionX = 20;
circle.PositionY = 50;

CocosSharp 개체는 해당 부모 레이아웃 컨트롤의 동작에 따라 자동으로 배치 되는 대부분의 Xamarin.Forms 뷰 달리 명시적 위치 값을 배치 됩니다 하는 것이 반드시 합니다.It’s important to note that CocosSharp objects are positioned by explicit position values, as opposed to most Xamarin.Forms views, which are automatically positioned according to the behavior of their parent layout controls.

사용자가 10 (픽셀이 아닌, 원을 그립니다 CocosSharp world 단위 공간에 있으므로) 단위로 왼쪽 또는 오른쪽에 원의 이동 하려면 두 개의 단추 중 하나를 클릭 하도록 허용 하는 코드를 추가 하겠습니다.We’ll add code to allow the user to click one of the two buttons to move the circle to the left or to the right by 10 units (not pixels, since the circle draws in the CocosSharp world unit space). 처음에 두 개의 public 메서드가 만듭니다는 GameScene 클래스:First we’ll create two public methods in the GameScene class:

public void MoveCircleLeft()
{
    circle.PositionX -= 10;
}

public void MoveCircleRight()
{
    circle.PositionX += 10;
}

그런 다음 처리기 두 개의 단추를 추가 HomePage 클릭에 응답 합니다.Next, we’ll add handlers to the two buttons in HomePage to respond to clicks. 완료 되 면이 CreateBottomHalf 메서드에 다음 코드를 포함 합니다.When finished, our CreateBottomHalf method contains the following code:

void CreateBottomHalf(Grid grid)
{
    // We'll use a StackLayout to organize our buttons
    var stackLayout = new StackLayout();

    // The first button will move the circle to the left when it is clicked:
    var moveLeftButton = new Button {
        Text = "Move Circle Left"
    };
    moveLeftButton.Clicked += (sender, e) => gameScene.MoveCircleLeft ();
    stackLayout.Children.Add (moveLeftButton);

    // The second button will move the circle to the right when clicked:
    var moveCircleRight = new Button {
        Text = "Move Circle Right"
    };
    moveCircleRight.Clicked += (sender, e) => gameScene.MoveCircleRight ();
    stackLayout.Children.Add (moveCircleRight);

    // The stack layout will be in the bottom half (row 1):
    grid.Children.Add (stackLayout, 0, 1);
}

이제 CocosSharp 원을 클릭에 대 한 응답으로 이동합니다.The CocosSharp circle now moves in response to clicks. 또한 명확 하 게 CocosSharp 캔버스의 경계 원을 충분히 왼쪽 이나 오른쪽으로 이동 하 여 볼 수 있습니다.We can also clearly see the boundaries of the CocosSharp canvas by moving the circle far enough to the left or right:

요약Summary

이 가이드는 기존 Xamarin.Forms에서 CocosSharp 추가할 방법을 보여 줍니다. 프로젝트를 Xamarin.Forms에서 CocosSharp, 사이의 상호 작용을 만드는 방법 및 CocosSharp에서 레이아웃을 만들 때 다양 한 고려 사항에 설명 합니다.This guide shows how to add CocosSharp to an existing Xamarin.Forms project, how to create interaction between Xamarin.Forms and CocosSharp, and discusses various considerations when creating layouts in CocosSharp.

CocosSharp 게임 엔진은이 가이드만 개략적으로 CocosSharp 수행할 수 있도록 많은 기능 및 깊이 제공 합니다.The CocosSharp game engine offers a lot of functionality and depth, so this guide only scratches the surface of what CocosSharp can do. CocosSharp에 대해 자세히 알고 싶은 개발자는 cocossharp archive에서 많은 문서를 찾을 수 있습니다.Developers interested in reading more about CocosSharp can find many articles in the CocosSharp archive.