ETATS

 

 

Non, pas la sorte unie. Nous parlons d'UnrealScript ici, nous rappelons? Quoi qu'il en soit, un état est simplement une section du code qui est exécuté seulement la classe est dans cet état. Par exemple, quels sont les différents déclarer qu'une arme pourrait être dedans? Elle pourrait mettre le feu, alt-mise à feu, rechargeant, ou séance juste regardant là assez. Chacune de ces conditions pourrait avoir leur propre état défini pour elles, qui contiendraient le code qui est seulement employé quand l'arme est en cette condition. Par exemple, si vous vouliez que une arme joue une animation à vide tous les 30 secondes en lieu, vous pourriez mettre un temporisateur faisant une boucle dans l'état à vide, ainsi il fonctionnerait seulement quand l'arme ne faisait rien. Pour vous donner une idée de la façon dont ils sont définis, voici l'état à vide réel de la classe d'arme:

 

state Idle
{
function AnimEnd()
{
PlayIdleAnim();
}

function bool PutDown()
{
GotoState('DownWeapon');
return True;
}

Begin:
bPointing=False;
if ( (AmmoType != None)
    && (AmmoType.AmmoAmount<=0) )
Pawn(Owner).SwitchToBestWeapon();
if ( Pawn(Owner).bFire!=0 ) Fire(0.0);
if ( Pawn(Owner).bAltFire!=0 ) AltFire(0.0);
Disable('AnimEnd');
PlayIdleAnim();
}

 

Le code dans les états peut être écrit dans des fonctions, ou sous des étiquettes. Commencez est de loin l'étiquette la plus commune, et n'importe quel code écrit sous elle est exécuté dès que la classe écrira cet état. Une autre chose fraîche au sujet des états est que vous pouvez les employer pour dépasser des fonctions dans une classe particulière. Par exemple, parole vous avez fait définir une fonction de Timer() en dehors de d'un état. Si vous définissiez une autre fonction de Timer() dans un état, alors cette fonction de Timer() dépasserait le global si la classe était dans cet état.

 

Une autre chose utile que vous pouvez faire avec un état est d'arrêter certaines fonctions de l'exécution tandis que la classe est dans cet état. Par exemple, si vous vouliez la faire ainsi le joueur ne pourrait pas mettre le feu tandis que son pistolet rechargeait (habituellement une bonne idée), vous pourriez ajouter cette ligne juste après la définition de votre état de recharge:

 

ignores Fire, AltFire;

 

Ceci le fait ainsi ni l'un ni l'autre la fonction de Fire() ou d'AltFire() ne peuvent être exécutés tandis que la classe est dans cet état. Pour faire un objet écrire un état, employez la syntaxe: "GoToState('State ');".