|
J'ai un petit
confession à faire. Vous connaissez tous les exemples que j'avais
donnés jusqu'ici, dans lequel je déclare une variable ou deux, saute
alors bien dans un certain code, tel qu'assigner des valeurs à ces
variables, ou inscription si rapport ou une boucle? Bien, c'était
illégal. Dans UnrealScript réel, vous ne pouvez pas simplement
écrire le code par lui-même. Les seules parties d'une classe qui
peut être complètement toute seule sont la déclaration de classe,
les déclarations variables, et les commandes d'exec.
Tout autrement doit
faire partie une fonction ou état. Ainsi, quelle est une fonction,
demandez-vous? Une fonction est juste un bloc de code qui effectue
une certaine action. Une fois qu'ils sont définis, ils peuvent
s'appeler dans d'autres parties du code, pour faire celui que ce
soit elles soient censés faire. Ils peuvent être donnés, ou passés,
des variables quand ils s'appellent, et ils peuvent renvoyer des
valeurs. Je sais que ce tout retentit probablement très compliqué
(vous assumant n'ont jamais fait la programmation avant), mais il
est vraiment assez simple une fois que vous le comprenez. Jetez un
coup d'oeil à cet exemple:
var int SomeInt, Result;
//Prenez un nombre entier, et renvoyez sa
place
function int Sqr(
int Num )
{
return Num * Num;
}
//Test la fonction Sqr()
function PostBeginPlay()
{
SomeInt = 3;
Result = Sqr(SomeInt);
}
Il y a deux fonctions
ici, Sqr(), et de PostBeginPlay(). Sqr() prend un nombre, numérique,
le multiplie par lui-même, et le renvoie. Vous noterez que je n'ai
pas déclaré numérique vers le haut avec SomeInt et résultat. C'est
parce que "on lui déclare" comme paramètre à une fonction. Quand
j'appelle Sqr() avalez dans la fonction de PostBeginPlay(), je
fournis SomeInt comme valeur dans la parenthèse, ou le paramètre.
L'appel à Sqr() cause le code contenu dans la fonction de Sqr() à
exécuter, avec SomeInt branché pour numérique vous notera également
que je mets l'appel à Sqr() après que l'"résultat =". ceci soit
parce que j'assigne la valeur qui est retournée par Sqr() pour
résulter. Quand tout ce code est exécution faite, le résultat sera
égal à 9: la place de 3. Vous avez pu également avoir noté le
mot-clé "int" avant le nom de fonction dans la définition de Sqr().
Ce moyens "int" que Sqr() renvoie une valeur de nombre entier.
Quoi qu'il en soit,
vous se demander à ce jour, d'où PostBeginPlay() peut-il
s'appelle-t-il? La réponse est, le moteur. Il y a une grande variété
de fonctions dans UnrealScript qui s'appellent par le moteur dans
certains endroits et dans certaines circonstances. La fonction de
PostBeginPlay() s'appelle quand un objet est d'abord créé, ainsi il
fait un bon endroit pour mettre le code que vous voulez être exécuté
avant n'importe quel autre code. Pour une liste de fonctions
communes qui s'appellent par le moteur (aussi bien que d'autres
fonctions utiles qui ne s'appellent pas par le moteur), référez-vous
à la référence de fonction sur le côté de cette page.
Ainsi, êtes-vous
complètement confondus encore? Si pas, alors vous êtes faire bon. Je
sais que je rayais ma tête tout à fait un peu quand j'ai appris la
première fois cette substance. Bien, lecture de subsistance, elle va
mieux (ou plus mauvais, selon votre point de vue). Vous savez la
manière que j'avais déclaré des variables toutes le long? Au début
d'une classe, en utilisant la syntaxe "variété [ vartype ] [ varname
]"? Bien, ce n'est pas la seule manière que vous pouvez déclarer une
variable. Que le type de variable, avoué en dehors de de toutes les
fonctions, s'appelle une variable globale. Des variables globales
peuvent être consultées n'importe où dans une classe, et même en
dehors de d'une classe (car nous verrons peu un plus tard). Mais, il
y a également des variables locales. Des variables locales sont
déclarées au début d'une fonction, et peuvent seulement être
consultées dans cette fonction. Elles sont utiles pour faire les
opérations à court terme qui ne devront pas "être vues" en dehors de
d'une fonction particulière. Vous voyez, un des éléments principaux
d'une fonction, et du programme orienté objectivement dans
l'ensemble, est le fait qu'une classe ou une fonction peut partager
des données utiles et l'information importante avec d'autres classes
et fonctions, mais se cache comment elles ont obtenu ces données et
information utiles. Elles montrent seulement le résultat, mais pas
comment elles ont trouvé le résultat. Est-ce que de toute façon, où
j'allais avec ceci? Ah, oui. Variables locales. Les variables
locales sont justes avoué comme des variables globales, seulement
elles emploient le mot-clé local au lieu du mot-clé de variété.
function PostBeginPlay()
{
//Déclare
un local entier
local int SomeInt;
//Assigne
une valeur
SomeInt = 3;
}
Ainsi, c'est une
variable locale. Pas trop compliqué, n'est-ce pas? Juste comme une
variable globale, excepté le fait qu'il peut seulement être consulté
à l'intérieur d'une fonction particulière.
|