I have been reading a lot about Delegates and m working on NGUI and plugins. I have understand what delegates are(most of the part…) but cant decide when and where to use.
Can anyone plz explain with a simple gaming scenario.
I have been reading a lot about Delegates and m working on NGUI and plugins. I have understand what delegates are(most of the part…) but cant decide when and where to use.
Can anyone plz explain with a simple gaming scenario.
Ok so basically a variable has data in it whereas a delegate contains methods/functions. You can use them to create complex behaviors for objects. So lets say you have a weapon in your game and want it to have different functions to it. Say an assault rifle.
public delegate void ShootWeapon();
ShootWeapon weaponShoot;
pulic enum FireMode
{
Single,
Burst,
Auto
}
FireMode currentFireMode = FireMode.Single;
So we have created a delegate and an enum here which contains the types of shooting your gun can do. Once this is done later in our update we can do something like this.
if(Input.GetKeyDown(KeyCode.Tab))
{ switch(currentFireMode)
{
case(FireMode.Singe):
//if your current weapon fire mode is single shot, switch to burst
currentFireMode = FireMode.Burst;
weaponShoot = BurstShot;
break;
case(FireMode.Burst):
//if your current weapon fire mode is single burst, switch to auto
currentFireMode = FireMode.Auto;
weaponShoot = AutoShot;
break;
case(FireMode.Auto):
//if your current weapon fire mode is single auto, switch to single
CurrentFireMode = FireMode.Single;
weaponShoot = SingleShot;
break;
}
}
So basically based on the enum the delegate is altered to run a different function. So you would have functions for SingleShot(), BurstShot(), AutoShot().
Have a look at this unity video too hopefully it will clear some things up for you. 1