Generics

Checked with version: 4.1

-

Difficulty: Intermediate

-

Date: 24 Jul 2015

How to create and use generic methods and classes.

Generics

Intermediate Scripting

SomeClass

Code snippet

using UnityEngine;
using System.Collections;

public class SomeClass 
{
    //Here is a generic method. Notice the generic
    //type 'T'. This 'T' will be replaced at runtime
    //with an actual type. 
    public T GenericMethod<T>(T param)
    {
        return param;
    }
}
//JavaScript does not allow generics to be defined. To utilize
//this functionality you will need to use C#
import UnityEngine
import System.Collections


public class SomeClass:

    //Here is a generic method. Notice the generic
    //type 'T'. This 'T' will be replaced at runtime
    //with an actual type. 
    public def GenericMethod [of T](param as T) as T:
        return param

SomeOtherClass

Code snippet

using UnityEngine;
using System.Collections;

public class SomeOtherClass : MonoBehaviour 
{
    void Start () 
    {
        SomeClass myClass = new SomeClass();
        
        //In order to use this method you must
        //tell the method what type to replace
        //'T' with.
        myClass.GenericMethod<int>(5);
    }
}
//JavaScript does not allow generics to be defined. To utilize
//this functionality you will need to use C#
import UnityEngine
import System.Collections


public class SomeOtherClass(MonoBehaviour):

    private def Start():
        myClass = SomeClass()
        
        //In order to use this method you must
        //tell the method what type to replace
        //'T' with.
        myClass.GenericMethod[of int](5)

GenericClass

Code snippet

using UnityEngine;
using System.Collections;

//Here is a generic class. Notice the generic type 'T'.
//'T' will be replaced with an actual type, as will also 
//instances of the type 'T' used in the class.
public class GenericClass <T>
{
    T item;
    
    public void UpdateItem(T newItem)
    {
        item = newItem;
    }
}
//JavaScript does not allow generics to be defined. To utilize
//this functionality you will need to use C#
import UnityEngine
import System.Collections


//Here is a generic class. Notice the generic type 'T'.
//'T' will be replaced with an actual type, as will also 
//instances of the type 'T' used in the class.
public class GenericClass [of T]:

    private item as T

    
    public def UpdateItem(newItem as T):
        item = newItem

GenericClassExample

Code snippet

using UnityEngine;
using System.Collections;

public class GenericClassExample : MonoBehaviour 
{
    void Start () 
    {       
        //In order to create an object of a generic class, you must
        //specify the type you want the class to have.
        GenericClass<int> myClass = new GenericClass<int>();
        
        myClass.UpdateItem(5);
    }
}
//JavaScript does not allow generics to be defined. To utilize
//this functionality you will need to use C#
import UnityEngine
import System.Collections


public class GenericClassExample(MonoBehaviour):

    private def Start():
        //In order to create an object of a generic class, you must
        //specify the type you want the class to have.
        myClass as GenericClass[of int] = GenericClass[of int]()
        
        myClass.UpdateItem(5)
Method Overloading
Inheritance

Related tutorials

Scripting

Beginner Gameplay Scripting

  1. Scripts as Behaviour Components
  2. Variables and Functions
  3. Conventions and Syntax
  4. C# vs JS syntax
  5. IF Statements
  6. Loops
  7. Scope and Access Modifiers
  8. Awake and Start
  9. Update and FixedUpdate
  10. Vector Maths
  11. Enabling and Disabling Components
  12. Activating GameObjects
  13. Translate and Rotate
  14. Look At
  15. Linear Interpolation
  16. Destroy
  17. GetButton and GetKey
  18. GetAxis
  19. OnMouseDown
  20. GetComponent
  21. Delta Time
  22. Data Types
  23. Classes
  24. Instantiate
  25. Arrays
  26. Invoke
  27. Enumerations
  28. Switch Statements

Intermediate Gameplay Scripting

  1. Properties
  2. Ternary Operator
  3. Statics
  4. Method Overloading
  5. Generics
  6. Inheritance
  7. Polymorphism
  8. Member Hiding
  9. Overriding
  10. Interfaces
  11. Extension Methods
  12. Namespaces
  13. Lists and Dictionaries
  14. Coroutines
  15. Quaternions
  16. Delegates
  17. Attributes
  18. Events

Editor Scripting

  1. Building a Custom Inspector
  2. The DrawDefaultInspector Function
  3. Adding Buttons to a Custom Inspector

Community Posts

  1. MonoDevelop's Debugger
  2. Good Coding Practices in Unity
  3. Unity Editor Extensions – Menu Items
  4. Creating Meshes

Project Architecture

  1. Mastering Unity Project Folder Structure - Version Control Systems

Live Sessions on Scripting

  1. Scripting Primer and Q&A
  2. Scripting Primer and Q&A - Continued
  3. Scripting Primer and Q&A - Continued (Again)
  4. Persistence - Saving and Loading Data
  5. Object Pooling
  6. Introduction to Scriptable Objects
  7. How to communicate between Scripts and GameObjects
  8. Coding in Unity for the Absolute Beginner
  9. Sound Effects & Scripting
  10. Editor Scripting Intro
  11. Writing Plugins
  12. Property Drawers & Custom Inspectors
  13. Events: Creating a simple messaging system
Got it

We use cookies to ensure that we give you the best experience on our website. Click here for more information.