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

第67節 - Unity: C# Get & Set Modifier

這一節我會介紹 Unity: C# Get & Set Modifier,屬性(Property)的get和set部分稱為Accessor(存取子)。簡單來說,set存取子用來給屬性賦值,之後就可以用get存取子存取屬性的值,我會在這節詳細介紹。

這一節主要介紹以下內容:

1: Create Your Own Getter & Setter Methods

2: Create Field & Property

3: Create Auto Property

4: Application of Get & Set Modifier

1.0) Get & Set Modifier

以下例子會介紹三個Get & Set的不同寫法,但執行結果是一樣的,如下圖:

Unity: C# Get & Set Modifier
  1. 建立一個新Project 。

  2. 建立三個Script。

  3. 把三個Script拖放到Main Camera內。

1.1) Create Your Own Getter & Setter Methods

例子一會建立自己的setGender()方法給屬性賦值,再建立getGender()方法存取屬性的值,如下圖:

Unity: C# Get & Set Modifier
  1. 建立一個類別 - Gender。

  2. 建立一個private field(域) - gender。

  3. 建立一個getGender()方法,它用來存取private field - gender的值。

  4. 建立一個setGender()方法,它用來給private field - gender賦值。

  5. 建立一個Gender類別物件 - g1, 用setGender()方法給private field - gender賦值(Male),用getGender()方法存取private field - gender的值(Male),再顯示在電腦屏幕上。

    注意1: 大家可以發現,當執行getGender()和setGender()方法時,private field - gender是完全不須理會,只會在內部用到。

    注意2: 就因為private field - gender是完全不須理會,只會在內部用到,這就是所謂Encapsulation(封裝),大家只可以設定自己的Gender類別物件 - g1,而不能接觸到private field - gender,達到安全的程式結構。

1.2) Create Field & Property

例子二會建立一個Property(屬性),再在Property內建立get和set存取子,如下圖:

Unity: C# Get & Set Modifier
  1. 建立一個類別 - Gender。

  2. 建立一個private field(域) - gender。

  3. 建立一個public property(屬性) - MyGender,在MyGender屬性內建立get和set存取子。

  4. 建立一個Gender類別物件 - g1, 用setGender()方法給private field - gender賦值(Female),用getGender()方法存取private field - gender的值(Female),再顯示在電腦屏幕上。

    注意1: 大家可以發現,當執行getGender()和setGender()方法時,private field - gender是完全不須理會,只會在內部用到。

    注意2: 就因為private field - gender是完全不須理會,只會在內部用到,這就是所謂Encapsulation(封裝),大家只可以設定自己的Gender類別物件 - g1,而不能接觸到private field - gender,達到安全的程式結構。

1.3) Create Auto Property

例子三會建立一個Auto Property(自動屬性),再在Auto Property內建立get和set存取子,如下圖:

注意: C# 6之後,可使用這個新的「自動屬性初始設定式」(Auto-Property Initializers)來簡化。

Unity: C# Get & Set Modifier
  1. 把例子二的程式碼刪除。

  2. 建立一個Auto Property - MyGender,在MyGender屬性內建立get和set存取子。

  3. 建立一個Gender類別物件 - g1, 用setGender()方法給private field - gender賦值(Female too),用getGender()方法存取private field - gender的值(Female too),再顯示在電腦屏幕上。

    注意1: 大家可以發現,當執行getGender()和setGender()方法時,private field - gender是完全不須理會,只會在內部用到。

    注意2: 就因為private field - gender是完全不須理會,只會在內部用到,這就是所謂Encapsulation(封裝),大家只可以設定自己的Gender類別物件 - g1,而不能接觸到private field - gender,達到安全的程式結構。

1.4) Result

Unity: C# Get & Set Modifier
  1. 三個程式的執行結果。

2) Application of get & set Modifier

以上三個例子的執行結果相同,但大家可能會問在編寫遊戲程式時,get和set實際上有甚麼用?

我在第54節 - Java: Blackjack Card Game介紹過以下例子:

Unity: C# Get & Set Modifier
  1. 我們的眼睛會自動把撲克牌的資料傳入大腦;

  2. 但是電腦程式就要我們主動把"A"和"Spade"傳入電腦,Java程式可以用getValue()和getSuit()方法主動把"A"和"Spade"傳入電腦;

  3. 最後用toString()方法顯示在屏幕上。

    注意: 以上例子沒有用上setValue()和setSpade()方法,因為我用了ArrayList<T>的add()方法,大家可參考第54節 - Java: Blackjack Card Game