CS2335
Master_v2
Master_v2
  • Introduction
  • Introduction
    • Introduction
      • Design
      • Game Design
    • Unity - Download
    • Visual Studio - IDE
    • Hero's Journey
  • Unity Basics
    • Unity Editor Windows
    • MonoBehavior - Base-Class
    • Unity Engine - Event Functions
  • Getting Started
    • UI-Elements
    • Animator Controller
      • Animation Steps
    • PlayerController Flow Chart
    • PlayerController Code
      • PlayerController - V1 - S20
      • PlayerController V2 S20
      • PlayerController V3 S20
  • Project 1 - Simple Game
    • Overview
    • Project 1 - Get Started
      • UML Class Diagram
    • Player GameObject
      • PlayerController.cs V2
      • PlayerController.cs V3
    • Create 2D Sprite Prefab: Rock
    • Sorting Layers
  • Project1 Code
    • PickUp PreFabs
    • Player GameObject
    • PlayerController - jump
    • GameData Version1
    • PlayerStats Version1
    • MiniGameManager
      • Logic Diagram
    • Simple Spawner
    • Utility Class
  • Project1 Enhancements
    • PickUp - SelfDestruct
    • Spawn from List of Prefabs
  • Project 2 - StateManager
    • Project 2 - Learning Objectives
    • Project 2 - Starter Assets
    • Project 2
      • State Machine Framework
        • Singleton Pattern
      • StateManager - Singleton Design Pattern
      • IStateBase, BeginState
      • Project 2 -Steps: Create new Scene and State
      • Project 2 - List of Steps
        • Project 2 - Starter Code
  • Project 2 -Dialog
    • Hide_Show_Panel Script
    • Configure TitlePanel, DecisionPanel
    • Simple Dialog Prefab
    • Conversation Scriptable Objects
    • DialogManager_ConvList
    • Image Transitions for Buttons
  • UI Components
    • Finding Game Objects
    • Game Objects: UI vs. 2D Sprite
    • UI Elements
      • Canvas: Screen-Space Render-Mode
      • UI-Buttons To Change Scene
      • Text Input
  • Project2 Resources
    • Visual Novel in Unity-Links
    • Scriptable Object Factory
      • ScriptableObjects
    • Dialog Prefab Packages
  • Project 3 - Overview
    • Branching Story Structures
    • Dictionary Data-Structure
      • Unity PlayerPrefs Dictionary
    • Dictionary: User-Choice Data
      • User-Choices - Example
        • Dictionary Value to Disable Options
    • Simplified Mini-Game
      • PlayerController_v2 Mods
        • PlayerController_v2_final
      • MiniGameManager_v2
  • Proj3: Inventory System
    • Inventory-System
      • Install and Configure
      • Diagrams, Resources
        • Item, Gem, Potion Classes
        • Inventory Class
      • InventoryDisplay, Slot UI
        • InventoryDisplay Class
        • Slot Class
        • Hazard Class
        • Layout Groups
      • Customization Steps
        • Configure Animation
        • AddItem Button
        • Concrete Class: Food
        • MiniGame Mods
          • PlayerController Mods
      • Code: InventorySystem
        • GameData, PickUp Mods
      • Resources: Data Structures
  • Proj3: Custom UnityEvents
    • Event Publishing Patterns
    • Custom Event Messaging
  • Proj3: Mini-Game
    • MiniGame-Overview-Proj3
    • LevelManager
      • LevelManager Logic Diagram
      • LevelManager FSM
      • LoadLevel, StartLevel Logic
      • Code Framework
    • Timer
  • Project 3 - Code Mods
    • Project 3 - Steps
    • Project 3 - Code
      • Code: Final Versions
        • PlayerController Mods
          • PlayerController_v2 Mods
        • GameData - Final
        • LevelManager
        • PlayerStats - Final
        • PickUp, Hazard, ScorePickUp
        • Spawner - Final
        • CameraFollow
        • ScreenFader
        • MiniGameState
        • Example: EndState
      • MiniGameWin Logic
  • Optional, Supplemental Content
    • Optional Content
      • Adding Audio
      • Screen Fading and Reloading
      • ScriptableObjects
      • Disable Debug Logging
      • Events and Actions
      • Saving Data - Serialization
      • Parallax Scrolling
      • Change Sprites
  • C# Language
    • C# Language
      • Variables
      • Enum
      • Encapsulation
        • C# Properties
        • Access Modifiers
      • Inheritance
      • Polymorphism
      • Interface
      • Switch-Case
      • List< T >
      • Queue< T >
      • Dictionary
      • Foreach
      • Static
      • Ternary Operator: ?
      • this
      • Delegates
    • Diagrams
      • State Machine Framework
      • UML Class Diagrams
      • Level Manager Logic Diagram
      • Flow-Chart: NumberGame
      • FSM: NumberGame
    • Glossary
    • References and Resources
    • Random Thoughts
Powered by GitBook
On this page
  • Enumeration
  • Interface
  • Inheritance
  • C# Generic Types < T >
  • C# Static
  • SerializeField Attribute
  • Random Numbers in Unity

Was this helpful?

  1. C# Language

Glossary

PreviousFSM: NumberGameNextReferences and Resources

Last updated 5 years ago

Was this helpful?

Enumeration

The enum keyword is used to declare an enumeration-type, which creates a distinct type that consists of a set of named constants called the enumerator list. Since enums are constant values, once they have been defined, they can't be modified within code. The underlying data-type for enums is int. To use an enum, first define a varialble of the enum-type, then use dot notation to assign a particular enum value to the variable:

//define an enum
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };  

//use an enum
Days currentDay = Days.Sunday;

//to access the integer value of an enum, use type-casting;
Debug.Log("current Day integer value " + int(currentDay));

Interface

Inheritance

In C#, a child class can inherit from a parent / base class. The syntax uses a colon : in the class definition to indicate a class, MyChildClass is inheriting from a ParentClass. In C#, the same syntax is used to indicate that a class is implementing an Interface. The convention is that all interface names should begin with the letter I. A child class can only inherit from a single base class. A C# class can implement any number of interfaces.

class MyChildClass: ParentClass { // class definition code }

C# Generic Types < T >

Unity Example: GetComponent < T >( )

private Animator animator;
animator = GetComponent<Animator>();  //GetComponent< T >( ) Generics: Placeholder T

C# Static

The keyword static, when applied to a property, variable, method, means that the element belongs to the class itself, and not an object instance of the class.

Example: Class: Mathf, method: Abs( float val )

 float inputX = Input.GetAxis("Horizontal");  // -1, 0 , 1 
 bool isWalking = Mathf.Abs(inputX) > 0;

SerializeField Attribute

SerializeField attribute allows you to have private script variables that will be visible in the Inspector. This allows setting values in the editor without giving access to the variable from within other scripts.

 [SerializeField]
    private string description;

Random Numbers in Unity

Choosing a Random Item from an Array - We could refactor Spawner so that it randomly selects elements from an array of prefabs. Picking an array element at random boils down to choosing a random integer between zero and the array’s maximum index value (which is equal to the length of the array minus one). This is easily done using the built-in Random.Range function:-

 var element = myArray[Random.Range(0, myArray.Length)];

 var element = myList[ Random.Range( 0, myList.Count)];
 
 float element = Random.value;   //Random class property: value, returns a float between 0.0, 1.0

Note that Random.Range returns a value from a range that includes the first parameter but excludes the second, so using myArray.Length, or myList.Count here gives the correct result.

Generics introduce the concept of type parameters to the .NET Framework, which make it possible to design classes and methods that defer the specification of one or more types until the class or method is declared and instantiated by client code.

Enum: MSDN Reference
MSDN Reference
Unity Manual: Using Random Numbers