Lua - Comment utiliser les fonctions d'un autre script
Je me demandais comment utiliser les fonctions d'un autre script en Lua. Par exemple, dire GameObjectUtilities
détient fonctions que de nombreux GameObject
scripts utilisent. Le Slime
(un GameObject
) script veut utiliser une fonction dans GameObjectUtilities
.
Je vais avoir du mal à obtenir que cela fonctionne. J'ai regardé ici, mais je n'ai pas encore vraiment comprendre pleinement. Dois-je créer un module ou un tableau pour contenir les fonctions dans GameObjectUtilities
pour les fonctions qu'il puisse être utilisé dans d'autres scripts? Si oui, quelle est la meilleure façon d'aller à ce sujet?
C'est très bizarre. Il fait le travail quand je viens de faire la manière normale. Le problème est que quand je lance mon application, et il essaie d'utiliser le script, ça ne fonctionne pas. Je n'ai pas l'obtenir.
OriginalL'auteur Person | 2010-03-19
Vous devez vous connecter pour publier un commentaire.
Non, vous n'avez pas à créer un module. Si vous venez de créer
foo.lua
comme ceci:Et puis dans votre script,
require 'foo'
, vous serez en mesure d'accéder à ladouble
fonctionner, comme il a été défini dans le même script. Ces fonctions ne pouvez pas obtenir vos locaux, mais ils sont créés dans le même environnement -- tous lesmodule 'name'
n'est de créer une nouvelle table et de réinitialisation de l'environnement actuel de la table.Donc, il vous suffit de faire:
Dans
GameObjectUtils.lua
, et si vousrequire 'GameObjectUtils'
, puisSlime
pouvez simplement utiliserslimefunc
. Ou, si vous voulez être préfixée:Et il sera accessible que
utils.slimefunc
. (Si vous faites cela, vous devrez faire très attention à ne pas laisser vos noms de fuite - une utilisation judicieuse des locaux.)Eh bien, en fait j'ai réalisé que j'étais à l'aide de différents nécessitent une syntaxe, comme l'exigent(" "); je suis passé à la vôtre et il a trouvé le bon chemin d'accès au fichier, mais ne pouvait toujours pas trouver le fichier. Malheureusement, cela rend-il l'air dans les mauvais endroits pour les autres fichiers. Je vais poster un exemple.
Mon "nécessitent une syntaxe" est juste un raccourci pour les appels de fonction. Si vous êtes à l'appel d'une fonction avec juste un littéral de chaîne ou un tableau littéral (mais pas une variable contenant par exemple), vous pouvez remplacer
function('')
oufunction({})
avecfunction ''
etfunction {}
, laissant les parenthèses. Il ne devrait pas faire une différence, de toute façon, depuis le besoin est juste une fonction normale. Êtes-vous sûr que votrepackage.path
réglage est correct?OriginalL'auteur LeafStorm
Vous n'avez pas donné assez d'informations. Par exemple, vous ne dites pas si
GameObjectUtilities
est défini, ou que sa valeur est. (J'imagine qu'il est défini àtrue
.)Je recommande fortement que vous achetez la deuxième édition de Roberto Ierusalimschy du superbe livre la Programmation en Lua, ce qui explique l'orchestration de
require
etmodule
très clairement et simplement. Il est également un excellent livre pour quiconque utilise Lua pour aider à obtenir les la plupart hors de la langue et des bibliothèques. Comme par hasard aurait-il, il y a un échantillon gratuit chapitre qui couvre exactement le sujet que vous recherchez. Mais acheter le livre de toute façon; il est de 25 $bien passé 🙂Si vous ne voulez pas acheter le livre, vous pouvez lire la échantillon gratuit chapitre, et vous pouvez également lire comment faire les choses de "l'ancienne", sans que
module de(...)
, parce que le intégralité de l'édition précédente est en ligne gratuits.Une possible réponse courte est que votre "utilitaires" script doit probablement créer une table et retourner.
OriginalL'auteur Norman Ramsey