Integrate cocos2d-unity

1. First, you'll need to download the cocos2d-unity plug-in.

$ git clone --recursive


Unity 5 is required. Unity 5.1.2f1 is our recommended version.

2. Create a new 2D project in the Unity Editor.

3. Drag the BBGamelib folders into your Assets path.

4. Create a c# script AppDelegate.cs under Assets/Scripts.

5. Double click AppDelegate.cs script to open MonoDevelop.

Add the following code to the class:

                    using UnityEngine;
                    using System.Collections;
                    using BBGamelib;
                    public class AppDelegate : CCAppDelegate {
                        //It's expansive to create a component during runtime in Unity.  
                        //So cocos2d-unity implements a components pool which created in editor mode. 
                        public override void applicationRunOnceOnBuilding ()
                            base.applicationRunOnceOnBuilding ();
                            //add components need to pool
                            //set pool size of CCNode.
                            //set pool size of CCSprite
                            //set poool size of CCLabel
                        //Same as you always do in xcode.  Called after the application loaded.
                        public override void applicationDidFinishLaunching ()
                            //Set the resolution height.  Screen will autosize to fit the height. 
                            //You can set different height for different devices.
                            _window.setResolutionHeight (640);
                            _view.setFrame (_window.bounds);
                            CCDirector.Reset ();
                            _director = CCDirector.sharedDirector;
                            _director.displayError = true;
                            _director.displayStats = true;
                            _director.displayLink = this;
                            _director.animationInterval = 1.0f / 60;
                            _director.view = _view;
                            _window.rootViewController = _director;
                            //Set your scene
                            _director.presentScene(HelloWorldLayer.Scene ());
                        //Called when application quit
                        void OnApplicationQuit() {
                        //Called when application enter background or resume
                        void OnApplicationPause(bool paused)

6. Create a empty GameObject under Hierarchy:

Add Component to the GameObject, and choose Scripts > App Delegate:

7. Create a c# script HelloWorldLayer.cs derived from CCLayer Add the following method to the class:.

                    public class HelloWorldLayer : CCLayer {
                        // Helper class method that creates a Scene with the HelloWorldLayer as the only child.
                        public static CCScene  Scene()
                            // 'scene' is an autorelease object.
                            CCScene scene = new CCScene();
                            // 'layer' is an autorelease object.
                            HelloWorldLayer layer = new HelloWorldLayer();
                            // add layer as a child to scene
                            // return the scene
                            return scene;
                        // on "init" you need to initialize your instance
                        protected override void init ()
                            base.init ();
                            // create and initialize a Label
                            CCLabelTTF label = new CCLabelTTF("Hello World","Arial", 64);
                            // ask director for the window size 
                            Vector2 size = CCDirector.sharedDirector.winSize;
                            // position the label on the center of the screen
                            label.position = size / 2;
                            // add the label as a child to this Layer
                            // menu items
                            // Default font size will be 28 points.
                            CCMenuItemFont.FontSize = 28;
                            // Cocos2d Menu Item using blocks
                            CCMenuItem itemCocos2d = new CCMenuItemFont("Cocos2d", delegate(object sender) {
                                label.text = "Hello Cocos2d";                               
                            // Unity Menu Item using blocks
                            CCMenuItem itemUnity = new CCMenuItemFont("Unity", delegate(object sender) {
                                label.text = "Hello Unity";                               
                            CCMenu menu = new CCMenu(itemCocos2d, itemUnity);
                            menu.position = new Vector2(size.x/2, size.y/2 - 50);
                            // Add the menu to the layer

That's it! You now can code your game like using cocos2d-objc in xcode!