📢 Introducing the Black Jack – Unity Game Pack

🎮 Calling all game enthusiasts and Unity developers! I am thrilled to announce the release of my latest product, the Black Jack 2D Unity Asset Pack. Developed with passion and expertise, this comprehensive pack is based on our renowned Unity Course and is designed to enhance your Black Jack game development process.

🔧 What’s Included:

  • All scripts and assets created and utilized in my Black Jack Unity Course.
  • Mouse input functionality for a seamless and interactive gaming experience.
  • Stunning 2D graphics, meticulously crafted to bring your game to life.
  • A fully playable game, ready to captivate your audience.
  • Two engaging scenes: a captivating menu and an immersive game mode.
  • Complete customization options, allowing you to shape the game according to your vision.

⚡️ Unlock Your Creativity: With the Black Jack – Unity Game Pack, you have the power to unleash your creativity and create a truly unique Black Jack game. Whether you’re a seasoned developer or just starting your Unity journey, this asset pack provides a solid foundation for your project.

🔗 Product Link: Get the Black Jack Game Pack

🌟 Immerse Yourself in the Course: If you’re looking to expand your Unity skills and gain valuable insights into game development, i highly recommend checking out our accompanying Unity Course on Udemy. Learn from industry experts, master the art of Black Jack game development, and take your projects to new heights. Course Link: Black Jack Course on Udemy

🚀 Boost Your Expertise: In addition to the Unity Course on Udemy, i also offer the course on OctoManGames.academy, where you can dive even deeper into Unity game development techniques. On OctoManGames Academy all courses will have the code included. Sharpen your skills, acquire advanced strategies, and become a true master of Unity. Course Link: Black Jack on OctoManGames Academy

📸

🔥 Don’t Miss Out! Ready to level up your game development? Get your hands on the Black Jack – Unity Game Pack today and embark on a thrilling journey of creating captivating Black Jack games. With its extensive features, remarkable graphics, and easy customization, this asset pack is a game-changer for developers like you.

👉 Grab your copy now: Get the Black Jack Game Pack

🎉 Unleash your creativity, develop extraordinary games, and let your imagination run wild with the Black Jack – Unity Game Pack. Start building your dream project today!

Cheers OctoMan

Unity Asset: 3D Model – Discus Fish

Swimming Discus for your Aquarium? here you can get it. Also includes schooling/flocking system.

Requires Unity Version 5.5

 ★Animated Discus Fish.
Swim Animation
★Maps:
4096x4096px Diffuse & Normal
★Poly / Tri count:
394 / 772
★Fishschool System

Screenshots & Animations

Video

Download Discus Fish

Unity Asset: Chattering Teeth

Did you ever wanted a chattering teeth as a monster, enemy or just as an environment filler?

Here you can get it! This is one of that wind up toys, you may came across in your childhood, youth or even now and then.

Requires Unity Version 5.3

Summary:

★ 9 Animations included
★ uses Multi Materials only
★ No UV Maps! = Not Mobile Optimised!
★ 3 Different Eye Types
★ custmizable Look by Material & Forms
★ Dracula Add On Teeth
★ Pre-created Prefabs

Animation List:

★ Howl
★ Quick Bite
★ Triple Bite
★ Walk 1
★ Chattering 1
★ Chattering 2
★ Walk 2
★ Dead 1
★ Dead 2

Screenshots:

Chattering Teeth Design your own!

Chattering Teeth Screenshot

Videos:

Setup Video

Download Chomper – Chattering Teeth

On site shop: Here

CG Trader: https://www.cgtrader.com/3d-models/character/other/chattering-teeth-chomper

Unity Asset: Four Winged Space Enemy

four winged space enemy unity asset octoman iconThis is a Four Winged Space Enemy. This model is designed to be an Enemy for Games like Space/ Top Down/ Rail Shooter.
It can also be used for ANY other game type like for Jump ‘n Runs and so on.

 

 

four winged space enemy unity asset octoman 01

3D Model – Four Winged Space Enemy:

For Shots you could use a Copy/Prefab of ShotSpot01 or just use anthing you like.
Just add ShotPoints for it or use the ShotSpot01 or anything you like.

There are 2 Models: unmodified and modified for the Demo Scene.
The modified already have events in the animations Tab & all animations are set.

Script: ChangeColorOrangeRed:

This Script changes 2 Colors after a given amount of time(resetTime) in seconds.
In the Demeo Scene it is set to Weakpoint001-004, Shotspot01 and Engine01 of the model Enemy001.
You can always change the colors as you like to. Same with the resetTime. So the can swap faster or slower.

Animations:

There are 4 Animations in the Model:

Idle
Shoot
Rotate Left
Rotate Right

Screenshots:

four winged space enemy unity asset octoman 04 four winged space enemy unity asset octoman 05

unity assets color switcher four winged space enemy switch octoman

Live Demo:

Videos:

Preview #01

Preview #02

Summary

★ Polys: 1260 / Tris: 2500
★ Animations: Idle, Shoot, Rotate Left, Rotate Right
★ Texture: TGA – 2k

★ Script: Weakpoint Color Change.
★ Now working with mechanim.

Download

CG Trader Link: https://www.cgtrader.com/3d-models/aircraft/other/animated-four-winged-space-enemy

Buy here:

Unity Version: 5.3

https://www.octomangames.com/downloads/four-winged-space-enemy/

 

Simple Quest Manager Dokumentation

This is the documentation and setup guide for Simple Quest Manager. It is also inside the package!

Glossary

Quest: Is a quest you can design to your needs. It contains strings for the description, hints, IDs, unlockable Quests, Rewards and so on.
QuestObjective: The Goal to achieve. Can be anything you can make contact with, destroy, collect. A string is used at the moment. You can also use an integer called ID.
QuestObject: Can be an NPC Character, any Object like a Book, a BulletinBoard or anything you can get quests from, or bring to.
QuestMarker: You can choose your own grafics of cause.

Exclamation Mark: Shows a Quest you can get.
Gray Question Mark: Shows Running but not completed Quest
Yellow Question Mark: Shows Quest Completed so it can given back to an NPC.

Setup Guide

Scenes: make sure to add the QuestManager and Quest UIManager Prefabs into all scenes where you need em.
Example: If you have NPC’s in a town you need the QuestManager in it, as well as the UIManager.
Since the QuestManager is persistent you don’t need it in a Battle Scene.

1.) The Quest Manager:

The Quest Manager is kind of the heart of the system. In here you design all your quests, and tell how many you have.

Size: Amount of Quests
Title: The title of a quest.
ID: The identifier of the quest, make sure all quest have a unique!
Progress: The current state of the quest. Only set them to NOT_AVAILABLE or AVAILABLE!

  1. NOT_AVAILABLE: If this quest is unlockable later on, that’s the state for.
  2. AVAILABLE: This quest is available for whichever NPC has it.
  3. ACTIVE: The quest has been taken, but is not completed yet. (QuestManager takes care of it.!)
  4. COMPLETE: The quest is complete but not brought back to the NPC. (QuestManager takes care of it.!)
  5. DONE: The has been brought back to NPC. (QuestManager takes care of it.!)

Description: Describe the Quest so people may know what to do.
Hint: Will be shown, once the Quest is ACTIVE and the Player talks to the Quest Receiver, or looks in the QuestLog
Congratulation: Will be shown, once the Quest is COMPLETE and the Player talks to the Quest Receiver, or looks in the QuestLog
Summary: Not yet completely implemented yet.
Next Quest: Represents the next Quest ID to be unlocked(form NOT_AVAILABLE to AVAILABLE) Chain Quests!

Quest Objective: A string parameter for the objective, like enemy1. needed to send the correct data later back to the QuestManager. ID’s would work as well.
Quest Objective Count: The current amount of the requested quest objective, should always be 0 at start. Example: Amount of killed enemys or picked up items.
Quest Objective Request: The requested amount of the quest objective.

Exp Reward: Not fully implemented since everyone has a different system. You need to enter your own functionality, depending on your systems.
Gold Reward: Not fully implemented since everyone has a different system. You need to enter your own functionality, depending on your systems.
Item Reward: Not fully implemented since everyone has a different system. You need to enter your own functionality, depending on your systems.

Once everything is setup here, make sure to apply the changes to the prefab!

2.) The Quest UI Manager:

The UI Manager will take care of all visible content. So when you talk an NPC, it will show the QuestPanels, and shows the QuestLog when pressing the corresponding button.
In this case it’s Q i believe. You can change it later on.

If you want to change the look to fit your design, make sure you check the Prefab out first, or take the pieces used already and fit the design to your needs.

Quest Available: Leave it unchecked!
Quest Running: Leave it unchecked!
Quest Panel: Drag in your QuestPanel.
Quest Log Panel: Drag in your QuestLogPanel.

Available & Active Quests: Nothing to do here!
QButton: The Button Prefab for the Quests.
Q Log Button: The Button Prefab for the Quest Log Quests.Q Button Spacer: Usually an empty GameObject or Panel which holds the QButtons for Active Quests.
Q Button Spacer 2: Usually an empty GameObject or Panel which holds the QButtons for Running Quests.
Q Log Button Spacer: Usually an empty GameObject or Panel which holds the QLogButtons for Active Quests seen in the Quest Log.

Quest Title: Text component to show the clicked quest title.
Quest Description: Text component to show the clicked quest description.
Quest Summary: Text component to show the clicked quest summary.
(no direct connection to the quest summary field in the Quest Manager at the moment)

Quest Log Title: Text component to show the clicked quest title in the Quest Log.
Quest Log Description: Text component to show the clicked quest description in the Quest Log.
Quest Log Summary: Text component to show the clicked quest summary in the Quest Log.
(no direct connection to the quest summary field in the Quest Manager at the moment)

3.) Quest Button & Quest Log Button

This Buttons just showing the name of the Quests. So they just require a text component.
So the QuestButton needs the QButton Script. The Text field is the one on the Button itself.
Add an OnClick Event and set the ShowAllInfos Function.

Same For the Quest Log Button.

4.) The NPC’s:

The NPC will need a Canvas for the Exclamation Mark & Question Mark.
This also needs to be child of the NPC.

The big Collision Box in front of the NPC is of type Trigger, the small around the NPC is a Collider.
We need one of type trigger so the system will trigger the possibilty to talk to the NPC.

Now drag the Quest Object script on the NPC.

  • Fill in IDs of available quests for this NPC. In my case it will be quest 1 & 2.
  • In Receivable is only ID 1, which means he can only take back the Quest with ID 1.
  • In QuestMarker place the canvas, in Image drag in the QuestMarkerImage.
  • In Available Sprite drag your ExclamationMarker Sprite.
  • In Receivable drag in the QuestionMarker Sprite.

5.) Saving & Loading

The questList will be saved in a binary format so it’s kinda protected from possible cheaters. You can Drag the SaveLoad Script to any Empty GameObject and call SaveQuest() at any point you want. You can use Buttons and many more. You can also use a Singleton design pattern or make it static to access it from anywhere.

6.) Quest Objectives

If it is a collectible Quest Objective you can easily add the QuestObjective Script. Add the needed values, like string name or ID and that’s it.
If it is a “Destroy Monster amount x” just use 1 simple line of code, when the monster dies:

QuestManager.questManager.AddQuestItem(monsterName, 1);

Unity Asset: Simple Quest Manager

Simple Quest Manager is an easy to setup and quick solution to create your own quests for your games in minutes.

 

Summary

★ Create your quests directly in the Inspector
★ No coding required
★ Quests can be taken and completed by differend NPC’s
★ You can create Chain Quests (unlock quests by completing others)
★ Currently only 1 Questobjective supported
★ You can save/load all Quests and their states at any point you want.
★ QuestObjectives are updated with just one line of code.

★ Rewards need to be setup on your own, depending on your systems like inventory/exp/currency

★ 1 Demo Scene (see Image above)
3d Models included:
★ 1 Low Poly Chara (walk and idle) 1 LowPoly NPC (wink anim)
★ 1 Low Poly Tree
★ 1 Low Poly Barn
★ 1 Low Poly Fence
★ 1 Low Poly Key

Scripts

Just 6 Scripts are driving the complete System.

Videos

Demo Video

Setup Guide

coming soon….

Setup Guides

Documention & Manual

Links

coming soon….

Price & Download

Shop Link: Get it here!

3D Model: Hydraulic Excavator EC 180

This is a rigged and animated hydraulic excavator with a rather low polycount. All important pieces are UV-Mapped, some just use materials, like cables, hydraulic pipes. Also i added 2 basics scripts to steer the excavator.

 

Summary

★ 11649 polys
★ Rigged & Pre-animated
★ Basic Script for Movement & Working
★ Diffuse + Normal Map 4096px
★ 5 Animations
★ Uses Mechanim
★ already working Prefab

Animations

★ BigArm Open/Close
★ SmallArm Open/Close
★ Shovel Open/Close
★ Rotate Top 360°
★ Door Open/Close
All cables are rigged and baked into the existing animations.
The model used 5 different materials, because not all elements are unwrapped! If needed i unwrap needed pieces too.

Scripts

The scripts provide:
★ Working Mode / Driving Mode (Button TAB)
★ Open / Close Door (F Button)
In Drive Mode:
★ Turn Left Forward / Backwards(Q & A Buttons)
In Working Mode:
★ Big Arm Up / Down (W & S Button)
★ Small Arm Up / Down (Arrow Up / Down)
★ Shovel Up / Down (Arrow Left / Right)
★ Rotate Upper Part (A & D Buttons)
Those scripts are not smoothly optimised, just a base to begin with!

Screenshots

drivingpromo doorpromo bigarmpromo switchpromo smallarmpromo shovelpromo rotatepromo

Videos

Links

Unity Forum: http://forum.unity3d.com/threads/3d-model-hydraulic-excavator-ec-180-wip.424785/

Price & Download

 

Rate Hydraulic Excavator!

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.

Content:

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
 SceneManager.LoadScene(SceneManager.GetActiveScene().name);

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));
         }
         else
         {
             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

To

  >= 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).

ownlevel

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

 newbutton.transform.SetParent(world.Spacer,false);

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.

buttonpositions

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!

level-manager-plus-own-locations

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.

unbenannt

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);
   }
   else
   {
      WorldList[0].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;
}
else
{
   WorldList[0].Spacer.gameObject.SetActive(true);
   //  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");
 loadingImage.SetActive(false);

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);
         //SceneManager.LoadScene(value);
         StartCoroutine(LoadingImageWait(value));
     }

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

     IEnumerator LoadingImageWait(string value)
     {
         loadingImage.SetActive(true);
         yield return new WaitForSeconds(3);//change the number to how long you want at least the loading screen be visable!
         SceneManager.LoadScene(value);
     }

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
         }
         else
         {
             WorldList[0].Spacer.gameObject.SetActive(true);
             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)
         {
             world.Spacer.gameObject.SetActive(false);
         }
         value.SetActive(true);
         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.lockPanel.SetActive(false);
         Wbutton.GetComponent<Button>().interactable = true;
    }
    else
    {
         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.

Example:

2.) Create a LevelSpacer for each World

Example:

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()
     {
         WorldPanel.SetActive(true);
         LevelPanel.SetActive(false);
     }
 public void ShowLevelPanel()
     {
         WorldPanel.SetActive(false);
         LevelPanel.SetActive(true);
     }
At the End of the FillList() Function before the Last “}” Closing Bracket enter this:
ShowWorldPanel();
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)
    {
        if(LvGameManager.lifes>0)
        {
            LvGameManager.lifes--;
            SceneManager.LoadScene(value);
        }
        else
        {
            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.

Features:

★ 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.

Screenshots:

unity asset color switcher interface octoman
Interface

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….

Links

Unity Forum: Link

Price & Download

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

Price: $5

Rate Color Switcher!