Major Softwares

  INDEX PAGE

  1. 簡介
  2. Java, Android和LibGDX好書推介
  3. Java, Android和LibGDX要學的知識
  4. 用Windows寫Java程式
  5. 用Eclipse寫Java程式
  6. 用Eclipse寫Android程式
  7. 用Eclipse寫LibGDX程式
  8. Standard Java Naming Conventions
  9. System.out.println()的用法和意思
  10. Where is main() method in Android?

LibGDX - Splash & Menu Screen

  1. LibGDX: World, Texture, Background, Camera, Viewport, Screen & OpenGL
  2. LibGDX: Texture, TextureRegion, SpriteBatch & Sprite
  3. UML(Unified Modeling Language): Class Diagram
  4. Type Casting, Upcasting & Downcasting
  5. @Override的用法和意思
  6. LibGDX: Scene2d & Graphical User Interface(GUI)
  7. LibGDX: Splash Screen
  8. LibGDX: Texture Packer
  9. LibGDX: BitmapFonts, JSON & Skin
  10. Android: R.java File
  11. Android: onClick事件的5種實現方式
  12. LibGDX: Game Menu Screen
  13. LibGDX: Advanced Game Menu Screen (using Abstract Screen)
  14. LibGDX: Disposable Interface
  15. Java & LibGDX: super keyword
  16. LibGDX: Advanced Game Menu Screen (using AssetManager)
  17. Java: Array, Arrays, List, ArrayList & LibGDX: Array
  18. LibGDX: File I/O (Preferences)
  19. LibGDX: Game Level Selection Screen
  20. LibGDX: Advanced Game Level Selection Screen (using AssetManager)

LibGDX - Tiled 2D Platform Game

  1. LibGDX: Lifecylce (Render() Method)
  2. LibGDX: Delta Time
  3. LibGDX: Animation & Spritesheet
  4. LibGDX: Keyboard, Mouse & Touch Screen Control
  5. Input Control (Polling VS Event Driven Input)
  6. LibGDX: Tiled (Background and Foreground)
  7. LibGDX: Jumping Action
  8. LibGDX: Tiled (Collision Detection)
  9. LibGDX: Tiled (Bullet Class)
  10. LibGDX: Audio (Sound & Music)
  11. LibGDX: Tiled (Scrollable Background with Camera & HUD)
  12. LibGDX: WorldController & WorldRenderer Class

LibGDX/Java - Card Game No.1 - Blackjack

  1. LibGDX: Install & Setup Android Studio IDE
  2. LibGDX: Use Android Studio to Run Java Hello World
  3. LibGDX: Use Android Studio to Run LibGDX Hello World
  4. Adobe Illustrator: Basic Components Part 1
  5. Adobe Illustrator: Basic Components Part 2
  6. Adobe Illustrator: BlackJack Table & Cards
  7. LibGDX: Blackjack Animation
  8. LibGDX: Interpolation
  9. Java: toString() Method
  10. Java: Blackjack Shuffle Methods
  11. LibGDX: Blackjack Shuffle Method
  12. Java: Blackjack Card Game

LibGDX - Others

  1. Making and Displaying App Icon
  2. LibGDX: Displaying Traditional and Simplified Chinese Characters
  3. LibGDX: Handling Different Screen Resolutions

Unity Game Engine & C#

  1. Visual Studio: C# Hello World
  2. Unity: C# Hello World
  3. Unity: Handling Different Screen Resolutions
  4. Unity: Life Cycle
  5. Unity: StartCoroutine, StopCoroutine, IEnumerator & Yield
  6. Unity: Splash Screen
  7. Unity: Fonts, Traditional and Simplified Chinese Characters
  8. Unity: GameObject, Class Object, new & Instantiate
  9. Unity: Start Screen with Glowing Animated Button
  10. Unity: C# Get & Set Modifier
  11. Unity: Delegates & Events
  12. Unity: File I/O, Read & Write Text File & PlayerPrefs
  13. Unity: Game Level Selection Screen
  14. Unity: Game Menu Screen & ScreenManager
  15. Unity: Encrypt and Decrypt Text File
  16. Unity: Options Menu Screen
  17. Unity: Convert Numbers Image to Custom Font

Unity - Card Game No.1 - Blackjack

  1. Unity: Blackjack Card Game - Part 1 (Full Game)
  2. Unity: Blackjack Card Game - Part 2
  3. Unity: Blackjack Card Game - Part 3
  4. Unity: Blackjack Card Game - Part 4
  5. Unity: Blackjack Card Game - Part 5
  6. Unity: Blackjack Card Game - Part 6
  7. Unity: Blackjack Card Game - Part 7

以下是預告-Coming soon!


Secret Weapon No.1

  1. Unity: Card Game No.2

Advanced Programming

  1. Unity: GPS Programming
  2. Unity: User Login System
  3. Unity: Augmented Reality (AR)

Secret Weapon No.2

  1. Unity: GPS & AR Application

第70節 - Unity: Game Level Selection Screen

這一節我會介紹Unity: Game Level Selection Screen,我在第69節 - Unity: File I/O, Read & Write Text File & PlayerPrefs介紹過PlayerPrefs,這節我會介紹如何運用PlayerPrefs讀取和儲存遊戲的狀況(Game State),再把Game Level Selection Screen顯示在屏幕上,本節的程式執行結果如下:

第70節 - Unity: Game Level Selection Screen

1) Result (執行結果):

以下是本節第70節 - Unity: Game Level Selection Screen的執行結果:

2) Level Ranking組合方法

我在第28節 - LibGDX: File I/O (Preferences)介紹過LibGDX的File I/O,File I/O就是用來把遊戲的資料儲存在電腦或手機上,每次開啟遊戲時程式就可以讀取遊戲資料,繼續遊戲。

為了減少圖片儲存的數目,我們要考慮Level Ranking的不同組合,並嘗試用最少的圖片組合出所有組合。

第70節 - Unity: Game Level Selection Screen
  1. 首先,未過關的圖片不須要考慮ranking,所以最少也須要十張未過關圖片lock0001.png, lock0002.png....lock0010.png。

  2. 過了關的Level,可能是1粒星、2粒星或3粒星,所以我們最少也須要十張數字圖片unlock0001.png, unlock0002.png...unlock0010.png和三張1粒星到3粒星圖片unlockbg1.png, unlockbg2.png和unlockbg3.png,這樣做就可以組合出全部30種可能性。

3) Step By Step Tutorial

首先,我會用Adobe Illustrator建立張512 x 1024的圖片,512和1024都是Power of Two,我在第18節 - LibGDX: Texture Packer介紹過為甚麼圖片尺寸建意是2的N次方圖片。

3.1) Adobe Illustrator

第70節 - Unity: Game Level Selection Screen
  1. 用Adobe Illustrator建立一張512 x 1024的圖片,圖片大小是64 x 76。

  2. 建立一張500 348的背景圖片。


3.2) Unity

第70節 - Unity: Game Level Selection Screen
  1. 選擇Main Camera。

  2. 選擇Main Camera,設定Orthographic Size = 768/2 = 384。

  3. 把剛剛用Adobe Illustrator製作好的圖片拖放到Assets區域內。

第70節 - Unity: Game Level Selection Screen
  1. 選擇圖片。

  2. 選擇Multipe。

  3. 設定Pixels Per Unit = 1。

  4. 選擇Sprite Editor。

第70節 - Unity: Game Level Selection Screen
  1. 圖片64 x 76會自動製作出來。

第70節 - Unity: Game Level Selection Screen
  1. 建立圖片500 x348。

  2. 圖片位置X = 0, Y = 448。

  3. 選擇Apply。



第70節 - Unity: Game Level Selection Screen
  1. 所有圖片會自動製作出來。

第70節 - Unity: Game Level Selection Screen
  1. 建立一個2D Object - Sprite - StarObject。

  2. 建立一個C# Script - LevelObjectScript1,再把它拖放到StarObject內。

  3. 再把三張Star圖片拖放到LevelObjectScript1內。

第70節 - Unity: Game Level Selection Screen
  1. 建立一個public unlockStars[ ] Array,這樣做就可以把圖片拖放到Inspector內。

  2. 建立一個unlockStarsIndex,它用來決定unlockStars[ ] Array的位置。

  3. 建立一個Awake()方法,再用地GetComponent<T>方法把握SpriteRenderer類別存入spriteRenderer物件內。

  4. 建立一個StarButton()方法,把指定的unlockStars[ ]圖片存入spriteRenderer.sprite物件內,這樣做就可以把UnlockStars圖片顯示在Scene上。

第70節 - Unity: Game Level Selection Screen
  1. 建立一個2D Object - Sprite - LockObject。

  2. 建立一個C# Script - LevelObjectScript2,再把它拖放到LockObject內。

  3. 再把十張Unlock圖片和十張lock圖片拖放到LevelObjectScript2內。

第70節 - Unity: Game Level Selection Screen
  1. 建立二個public unlockNums[ ]和lockNums[] Array,這樣做就可以把圖片拖放到Inspector內。

  2. 建立一個NumsIndex,它用來決定unlockNums[ ]和lockNums[]Array的位置。

  3. 建立一個Awake()方法,再用地GetComponent<T>方法把握SpriteRenderer類別存入spriteRenderer物件內。

  4. 建立一個LockButton()方法,傳入一個isLocked Boolean參數,它用來決定遊戲Level是lock或是unlock,再把圖片存入spriteRenderer.sprite物件內,這樣做就可以把圖片顯示在Scene上。

第70節 - Unity: Game Level Selection Screen
  1. 在於Assets內建立一個Prefabs Directory,把2D Object - Sprite - StarObject和LockObject拖放到Prefabs Directory內。

第70節 - Unity: Game Level Selection Screen
  1. 建立一個Empty GameObject - MainObject。

  2. 建立一個C# Script - MainScript1,再把它拖放到MainObject內。

  3. 再把二個Prefabs拖放到MainScript1內。

第70節 - Unity: Game Level Selection Screen
  1. 建立二個public GameObject,這樣做就可以把二個Prefabs拖放到Inspector內。

  2. 建立二個GameObject Array,它用Prefabs複製(Instantiate/Clone)一個GameObject,再把複製好的GameObject儲入GameObject Array。

  3. 建立二個C# Script Array,它用來提取C# Script的內容。

  4. 建立二個Vector3 Array,它用來設定位置。

  5. 建立一個Awake()方法,建立所有Array物件。

  6. 用PlayerPrefs.SetInt()方法儲存遊戲的狀況(Game State)。

  7. 用PlayerPrefs.GetInt()方法讀取遊戲的狀況(Game State)。

  8. 設定所有Level圖片的位置。

  9. 把程式用地if-else statement執行1至10的Level圖片,如果遊戲Level是完成,就顯示unlock圖片和Star Ranking圖片

  10. 否則就顯示lock圖片

第70節 - Unity: Game Level Selection Screen
  1. 建立一個2D Object - Sprite -BgObject。

  2. 把一張背景圖片拖放到BgObject內。

第70節 - Unity: Game Level Selection Screen
  1. 例如設定levelCleared = 9,即是遊戲完成了九個Level。

  2. 設定每個Level的Ranking,即是一粒星、二粒星或三粒星。

執行結果

第70節 - Unity: Game Level Selection Screen

Download above code and sample pictures here!