Level Manager Plus – FAQ

Since i get the same requests over and over again, i decided to write a small FAQ with small snippets of code and such, depending on the needs of purchasers.


1.) How to make a 2D Trigger to unlock the next Level?

2.) How to delete Save Data without restarting the whole game.

3.) How to set the world button background images individually?

4.) How can i implement a “Next Level” button after i have completed a Level?

5.) How can i have individual scores to unlock stars for each level?

6.) Can i create alot levels in just one scene?

7.) How to create the buttons on a Map without a Grid Layout Group?

8.) How can i tint the current World Button?

9.) How to implement a simple loading screen?

10.) How to unlock the next Level only with a specific score?

11.) How can i change a Background Image when i press the World Button?

12.) How to unlock world Buttons according to a Stars Amount?

13.) How to show World & Level Buttons on different Screens?

14.) How to show the choosen World Name instead of “World 1”?

15.) How to load levels only if i have enough “Lifes”

1.) How to make a 2D Trigger to unlock the next Level?

Whatever your Trigger is, add a script to it. In there create the OnTriggerEnter2D Function:

  //Unlock Next Level On touch
 void OnTriggerEnter2D()
     int myCurLevel = GameManager.Instance.loadedLevel;
     int myCurWorld = GameManager.Instance.loadedWorld;
     if (myCurLevel < GameManager.Instance.worldsAndLevels[myCurWorld - 1])
         PlayerPrefs.SetInt("Level" + myCurWorld + "_" + (myCurLevel+1), 1);

2.) How to delete Save Data without restarting the whole game?

Just extent the DeleteAll() function with this extra line of code:

  //Reload Scene

3.) How to set the world button background images individually?

In the World Class add a new sprite;

  public Sprite WorldSprite;

In the FillList() function in the first foreach loop after the world button has been created enter this:

  //change the background image of the button itself
 if (world.WorldSprite != null)
     newWorldButton.GetComponent<Button>().image.sprite = world.WorldSprite;

Now you can use different sprites as background images in the world buttons, just drag them into the inspector slot.

4.) How can i implement a “Next Level” button after i have completed a Level?

Create your button. Add an onclick event. In Saver add this small function:

  public void GoToNextLevel()
         if (curLevel < GameManager.Instance.worldsAndLevels[curWorld - 1])
             GameManager.Instance.loadedLevel = (curLevel + 1);
             SceneManager.LoadScene("Level" + curWorld + "_" + (curLevel + 1));
             Debug.Log("NO LEVELS LEFT IN THIS WORLD");

Drag Saver into the On Click event of the button and choose GoToNextLevel function.

5.) How can i have individual scores to unlock stars for each level?

Add the Star1Points, Star2Points, Star3Points variables into the Level class.

Change the 3 Lines in the 2nd foreach where you see

  >= Star1Points    >= Star2Points   >= Star3Points


  >= level.Star1Points   >= level.Star2Points   >= level.Star3Points

Now you can set Star Points for each Level individually.

6.) Can i create alot levels in just one scene?

No! Level Manager Plus needs 1 scene per level.


7.) How to create the buttons on a Map without a Grid Layout Group?

This might require you to change the Button Size and appearence depending on the screensize. You can even create a 3D Level Selector with this method ;).

Here is how:

1.) If you want different positions in each world. Add this in the world class in The Level Manager Script:

 public List <Transform> buttonPositions = new List<Transform>();

This will be the list for all button positions. You can also use Vector2 Or Vector3 if you know the positions.

2.) Create an empty GameObject without any Layout Group on it and make it child of your main Panel, Name it FreeSpacer1 or whatever you please. Make it as big as your Map is.

3.) In the Level Manager GameObject, in World 1 change the Spacer to this GameObject(FreeSpacer1).

4.) Now create empty Images or whatever in the MainPanel for the positions where you want the buttons to appear. Rename them properly so you know where which button has to be. You can also help yourself with using Icons in the top left of the Inspector(The gray ones in the image below).


5.) Now again in the Levelmanager Script go to the FillList() function. In the foreach loop for the levels, after this line:


Add the following:

 if (world.buttonPositions.Count > 0)
      button.transform.position = world.buttonPositions[curLevel - 1].position;

6.) Now drag your locations you need into the buttonPositions List.


7.) Once done disable the image components of your location Objects, so you wont see em and you will have your buttons anywhere you want on the map.

Repeat steps 2,3,4,6 for all worlds, Or mix it how ever you like , Done!


8.) How can i tint the current World Button?

This can be fairly easy achieved.

1.)Open up WorldButton.cs

2.)Input the following function:

 public void changeColor()
         //Find all Worldbuttons in the scene
         GameObject[] worldButtons = GameObject.FindGameObjectsWithTag("WorldButton");
         for (int i = 0; i < worldButtons.Length;i++)
             worldButtons[i].GetComponent<Button>().image.color = Color.white;//change all to white color
         GetComponent<Button>().image.color = Color.red;//change the currently clicked one to red

3.) Add this function now to the OnClick Event in the WorldButton Prefab. To do so click on the + Drag in the World Button Prefab and choose changeColor() on the right.


Now you are able to click on the Buttons so the can switch their color. But you also want that from the start of the game so we have to make a small change in the levelmanager.cs

4.) Open LevelManager.cs

5.) create a new List in the top

 List<GameObject> worldButtons = new List<GameObject>();

6.) Now in the FillList() function search for SaveAll(). Under that you see this:

//show the right/last used World Spacer
if (GameManager.Instance.loadedWorld > 0)
      WorldList[GameManager.Instance.loadedWorld - 1].Spacer.gameObject.SetActive(true);

Change it to this:

//show the right/last used World Spacer
if (GameManager.Instance.loadedWorld > 0)
   WorldList[GameManager.Instance.loadedWorld - 1].Spacer.gameObject.SetActive(true);
   //Change the color of the world button to red
   worldButtons[GameManager.Instance.loadedWorld - 1].GetComponent<Button>().image.color = Color.red;
   //  Change the color of the world button to red 
   worldButtons[0].GetComponent<Button>().image.color = Color.red;

That’s it.

9.) How to implement a simple loading screen?

This is a rather easy task. Open LevelManager.cs.

1.) Create a new variable for our Loading Image:

 GameObject loadingImage;

2.) In Start() add:

 loadingImage = GameObject.Find("LoadingImage");

3.) In the Canvas create an Image, make it uniform stretch and add all you need as child objects. Like: Sprites, Text, Loading Circles… Make sure it’s named LoadingImage so it can be found on Start(). You can implement animated stuff as you please and like on it as childs.

4.) Change the loadLevels function to this:

     void loadLevels(string value)
         //Application.LoadLevel (value);

5.) Now we need an IEnumerator to show the Image, wait a bit and then do the actual loading.

     IEnumerator LoadingImageWait(string value)
         yield return new WaitForSeconds(3);//change the number to how long you want at least the loading screen be visable!

So now, when you press a LevelButton, you will see the image for 3 seconds, then the actual loading process will happen. This is only a one way solution!

10.) How to unlock the next Level only with a specific score?

Since the Saver.CS always unlocks the next level once it’s called, you need to make sure you put this unlocking into an if statement which checks, if the score is high enough before you unlock the next level.

1.) So open up Saver.CS and go to the SaveMyGame() function. Inside the first if statement is this line(39):

PlayerPrefs.SetInt("Level" + NextWorld + "_1", 1);//unlock next World with level 1

And in the else if statement this line(51):

 PlayerPrefs.SetInt("Level" + curWorld + "_" + NextLevel, 1);

Around that lines you need to build the if statements to check if the score is high enough,  to unlock the next level:

 if (score >= 100)
                 PlayerPrefs.SetInt("Level" + NextWorld + "_1", 1);//unlock next World with level 1

Instead of hardcoding it you can always create a variable to pass in any values per level you like and set them up in the inspector:

public int unlockScore;
 if (score >= unlockScore)
                 PlayerPrefs.SetInt("Level" + NextWorld + "_1", 1);//unlock next World with level 1

11.) How can i change a Background Image when i press the World Button?

1.) Create a new variable in the World Class in LevelManager.CS

 public class World
         public Sprite WorldBackround;

2.) Also we need a variable to put the Image in, you can place it directly in the canvas or where you like.

 public Sprite LockedSprite;//after this 
 public Image WorldBackgroundImage; //add this

3.)In the first foreach Loop look for this line

 GameObject value = world.Spacer.gameObject;

under that add

 Sprite WSprite = world.WorldBackround;

4.)change the Addlistender Call from:

//call the addlistener functions
WorldSwitcher(b, value);

to this:

//call the addlistener functions
  WorldSwitcher(b, value, WSprite);

5.) At the End of the Fill List Funtion is a SaveAll() Call. The If statement after this needs to be changed to:

 if (GameManager.Instance.loadedWorld > 0)
             WorldList[GameManager.Instance.loadedWorld - 1].Spacer.gameObject.SetActive(true);
             WorldBackgroundImage.sprite = WorldList[GameManager.Instance.loadedWorld - 1].WorldBackground; //add this
             WorldBackgroundImage.sprite = WorldList[0].WorldBackground;//add this

6.) Change the WorldSwitcher Function to this:

  //show the right spacer for the corresponding world
     void WorldSwitcher(Button b, GameObject value, Sprite WSprite)
         b.onClick.AddListener(() => SwitchWorlds(value,WSprite));

7.) Change the SwitchWorlds Function to:

  void SwitchWorlds(GameObject value, Sprite WSprite)
         foreach (var world in WorldList)
         WorldBackgroundImage.sprite = WSprite;

8.) Now Save and fill in the data inside Level Manager GameObject.

  • Drag the GameObject which holds the Image Component for the Background in WorldBackgroundImage Slot
  • Drag the Sprites for the correct worlds into the WorldBackround Slots in the Worlds

12.) How to unlock world Buttons according to a Stars Amount?

1.) First Make sure you show the Player what the needed Stars are. How you want to design it is your own decision!

I created a panel as a child of my World Button with a Lock Image, A Stars Text and a Star Image.

Wolrld Button Unlocking Panel

2.) Now we need to implement that Panel and the StarsText to our WorldButton Script.

So add that 2 Variables:

 public GameObject lockPanel;
 public Text starsNeededText;

3.) After you have saved the Script Drag the Panel and  text for the Stars in the Script on the Button:

4.) Now we need to implement the funcionality onto the Level Manager Script.

In the World class add this variable:

  public class World
         public int starsNeededToUnlock=0;

Add another variable maybe ate the end of the variables.

 private int starsCounter=0;

Now in the 1st foreach of the FillList() function add after line i show:

 Wbutton.WorldText.text = "World " + curWorld.ToString();//after this line
 Wbutton.starsNeededText.text = (world.starsNeededToUnlock-starsCounter).ToString();//ADD THIS

And after the following stuff add this:

 Button b = Wbutton.GetComponent<Button>();//after this line
 //add this
 if (world.starsNeededToUnlock - starsCounter == 0)
         Wbutton.GetComponent<Button>().interactable = true;
         Wbutton.GetComponent<Button>().interactable = false;

Finally we need to count the stars in the 2nd foreach loop:

 button.Star1.SetActive(true);//after this
 starsCounter++;//add this 

 button.Star2.SetActive(true);//after this
 starsCounter++;//add this 

 button.Star3.SetActive(true);//after this
 starsCounter++;//add this

4.) Now all is setup. In the Level Manager make sure the first World has 0 stars needed and the others seted up to your needs.

(IMPORTANT) If needed stars are less thatn levels per world completed make sure to set other worlds first Level to be unlocked and interactable.

The result could look like this:


13.) How to show World & Level Buttons on different Screens?

1. Create a Panel for the World Buttons in the Canvas.


2.) Create a LevelSpacer for each World


The Back Button is used to switch between the world & the Level Spacers.

Make sure you arrange all like this:

In LevelManager.CS create 2 new Variables:

public GameObject WorldPanel;
public GameObject LevelPanel;

And 2 new functions:

public void ShowWorldPanel()
 public void ShowLevelPanel()
At the End of the FillList() Function before the Last “}” Closing Bracket enter this:
The WorldSwitcher Function needs a little change to:
void WorldSwitcher(Button b, GameObject value)
         b.onClick.AddListener(() => SwitchWorlds(value));
         b.onClick.AddListener(() => ShowLevelPanel());
Now connect the newly created Panels in the Level Manager Gameobject:
And the Back Buttons OnClick Event gets the ShowWorldPanel Function:
Thats it. Don’t forget to input the correct Spacers in the Worlds.

14.) How to show the choosen World Name instead of “World 1”?

1.) In the first foreach loop of LevelManager.Cs look for the follwing line:
 Wbutton.WorldText.text = "World " + curWorld.ToString();//world.worldNumber;
2.) Comment out the line or change it to:
  Wbutton.WorldText.text = world.worldName;
That’s everthing to see the choosen World Name on the WorldButton.

15.) How to load levels only if i have enough “Lifes”?

1.) In LevelManager.cs look for

 void loadLevels(string value)

In here you just add your Lifes system, Example:

 void loadLevels(string value)
            Debug.Log("NO LIFES LEFT");

 Purchase Level Manager Plus here:

Unity Asset: Color Switcher

Color Switcher is a small script written in C#.

Color Switcher will switch or fade through as many main colors of GameObject/ 3D-Models as you like with a given interval between the colors. Color Switcher has a Editor Script which makes it easier to handle all inputs. You can enable several Color Switcher at the save time for syncing them in runtime. You can reverse the order  depending on the Element you start.

Color Switcher will loop through all given colors until you stop it. For Example it starts at Color 1 , goes through all following and once completed it starts again at Color 1. Ping Pong will send it back and forth instead of looping.

The current color of the GameObject can also be used as the first color, no mater what you placed in it.

To create some randomness you can use the same setup everywhere, but on some you can begin with another element(Color) . More randomness with the same color sheme / setup can be achieved with ping pong and / or reverse.

If there is a Texture Map on your GameObject, Color Switcher will still work, and will tint it with the colors you set. The texture itself will not be changed. If the colors are to dark, you will not notice any change, because black for example is the darkest color already and can’t be red tinted.


★ Uses RGB Color Palette
★ Easy and quick to setup
★ Choose as much colors as you like
★ Set an Interval (time between the colors to switch in seconds)
★ Works on Multi-Materials(Map dependant)
★ Reversed (switch backwards)
★ PingPong
★ Fading (can fade between colors)

The Package contains a manual pdf and a Demo-Scene. Please watch the videos to see how it works.


unity asset color switcher interface octoman

Color Switcher Examples:

Police / Firetruck sirens

unity assets color switcher firetruck switch
Switching Colors
unity assets color switcher firetruck fade
Fading Colors

Working site signs & street arrows

unity assets color switcher street arrow switch octoman
Different Color Begin
unity assets color switcher working sign fade octoman
3 Color Fade

Weakpoints of enemiesFour Winged Space Enemy

unity assets color switcher four winged space enemy switch octoman
Four Winged Space Enemy

Christmas lights

unity assets color switcher christmas lights switch octoman
Multiple Colors

and so on….


Unity Forum: Link

Price & Download

Unity Asset Store Link: http://u3d.as/aGc

Price: $5

Rate Color Switcher!

Galaxy Girls FAQ

Galaxy Girls Main Screen

What is Galaxy Girls?

Galaxy Girls is an anime driver/styled shoot’em up. Battle through alot waves of AI ships in the campain mode. Earn credits and upgrade your ship with new weapons, equipmenz and abilitys.

On which platform can i play it?

The first release will be on android. Maybe later i will release it on IOS.

How to Play?

Drag around the ship with your mouse to aim the enemy ships. When you start dragging the ship will automatically fire all bullets/rockets and other weapon shots you purchased already. Make sure you avoid all enemy bullets.

To win a level you need to survive all waves of upcoming enemy ships.

How many game modes will be there?

Currently planned is a campain mode with at least 3 modes: Easy,Normal, Hard.

Will there be other ships to play?

Maybe 4 ships are playable

Which game engine is Galaxy Girls made with?

Unity Engine.

How much does Galaxy Girls cost?

The game will be free, but will include in-app purchases.

When do you release it?

Currently i have no fixed date, but i will post about it once i’m sure about it!


How to use shields and other powerups?

There be buttons in the game screen, which will show you the amount yu have. You just need to press them once needed.

Will there be a Leaderboard?

I’m not sure yet if this is needed, but maybe for the level you reached, Or complete score you achieved.


Galaxy Girls – The Ingame Shop System

Working on the shop system for Galaxy Girls wasn’t to easy. But now it can save and load all collected coins. Also bought updates for the ship load correctly. At this point the basic shot and the homing missles are fully upgradable. Also the design is kinda complete too.

The problems i encountered

Saving and Loading that high amount of data in a secure way was pretty tricky to handle, because there have been so many things to consider. Since there have been to many datas i needed to be saved and/or loaded i used a binary formatting system, which just writes one savefile. Doing so will also speed up the loading and saving process. This way i made the decision to make the save file more secure. Playerprefs would just take to much time in load or save. So using them, havn’t been an option.

Screenshots & Animated Gifs

Galaxy Girls Prototype Animation

Animated Gif (~2MB)

Galaxy Girls Prototype Animation


Galaxy Girls – Kamikaze Glider


This suiciding enemy is designed for destroy through ramming. It may rotate later on to look more like a drill. It wont shoot, but will be deadly enough because of it’s speed. It will come in masses since it’s health is pretty low.

Attack: Suicide Ramming
Speed: Fast
Shots: None
Health: Low

Conzept Art

Conzept Art, Prototype Render

Galaxy Girls Kamikaze Glider Promo

Ingame Screenshot

Galaxy Girls Kamikaze Glider Promo2

Turntable Prototypes

Galaxy Girls Kamikaze Glider Turntable

Galaxy Girls Kamikaze Glider Turntable2


Galaxy Girls – The first prototype

Galaxy Girls Logo Version01

Since this is my first real dev post about Galaxy Girls, i already have some stuff done, which i may didn’t mentioned but will in the future.

Shop System in Galaxy Girls

I have integrated a shop system in Galaxy Girls at this stage of developement. This means the player is already able to spend credits and cash credits already.

The First Prototye in Galaxy Girls

There is one stage fully playable already, so the touch input control works good for now. I might change this later. At the moment you have to drag the ship around.

AI, AI damage & Pathfinding

The AI or enemys are spawning from diferent spawnpoints and following predefined paths. Currently i have 7 paths which will be choosen randomly.Some AI’s or enemy are able to shoot, others don’t.

Problems i encountered

The path creation was a bit tricky, but now i can create the paths directly in the scene, to create even more paths.

Dev video

Share this to the world if you like it!

Galaxy Girls – New Dev Blog

Welcome to the Galaxy Girls Dev Blog.

Galaxy Girls Logo Version01

Since i have this new website www.octomangames.com i decided to recreate the dev blog here. The old blog on Blogger will not be feeded with any infos anymore. First i will recreate the old dev blog entrys of Galaxy Girls here. Newer content will come, once Galaxy Girls gets more updates.

Thanks for reading. Don’t forget to share Galaxy Girls to the world 😉



Unity Particle System Tutorial: Circles with Code

If you have read my other Unity Particle System Tutorial: Circle Motion you might have noticed doing all that stuff by hand can take some minutes. Also you need to calculate every point beforehand.

The cool thing about using code is you can use a frequency(a repeatrate) and even a amplitude (the value height -1.0f,1.0f). So you can easy enter a frequency of 100 so you will 100 cicles without touching the curves by hand which saves alot time. also you could increment amplitude over time or change to your needs to create tornados or other shapes. So accuracy and usability are the most important key features in terms of coding, which you might not be able to provide by hand.

Here is the tutorial: Unity Particle System Tutorial: Circles with Code