|
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 ');".
|