Jeu d'exploration où vous explorez les niveaux, mais les objets dans le monde sont incomplets et vous devez les scripter en utilisant LUA pour résoudre des puzzles et avancer.
Ce jeu utilise les bibliothèques suivantes:
Remarque : L'API est susceptible de changer pendant le développement!
À l'intérieur des scripts / Lua.Modules , créez un fichier de module à l'aide de ce modèle:
using UnityEngine ;
namespace Lua . Modules
{
public class ModuleName : MonoBehaviour
{
}
} Pour créer un exemple de méthode, vous devez fournir un type de retour (éventuellement avec des paramètres), par exemple (assurez-vous que la méthode est statique et publique):
Remarque : il existe un moyen de contourner un type de retour si vous utilisez un paramètre (voir Lua.Modules.Miscellaneous et Print mais cela n'est pas recommandé)
// Example method
public static int ExampleMethod ( string message )
{
UnityEngine . Debug . Log ( message ) ;
return 0 ; // 0 - Success
} Pour exposer la méthode afin qu'il puisse être utilisé dans LUA, il y a deux étapes supplémentaires. À l'intérieur Lua.LuaManager , il y a une région appelée "Expose". Là, créez une Func ou Action avec une référence aux fonctions de votre module, par exemple
// Miscellaneous
script . Globals [ "ExampleMethod" ] = ( Func < string , int > ) ModuleName . ExampleMethod ; Enfin, il est nécessaire d'ajouter une bascule à la méthode à l'intérieur de Lua.LuaControllable si la méthode nécessite l'utilisation de Utils.ReturnLuaObject ou LuaControllable.CheckOperationLegality . Pour ce faire, allez à l'intérieur de Lua.LuaControllable puis à l'intérieur des champs de la région "Sérialiser pour activer les fonctions autorisées sur un objet". Créez ensuite une valeur booléenne (privé et SerializeField) avec le nom exact de la fonction créée (nécessitant votre fonction être nommée de manière unique parmi toutes les méthodes exposées), par exemple
[ SerializeField ] private bool ExampleMethod = false ; Pour utiliser la méthode LuaControllable.CheckOperationLegality , vous devez également utiliser Utils.ReturnLuaObject as luacontrollable.CheckOperationLegalité nécessite une référence à cet objet de jeu et à son luacontroller.
Tout d'abord, la méthode créée nécessite un paramètre de chaîne (le premier paramètre est la norme) comme celle-ci: public static int SetPositionRelative(string controllerName, float x, float y)
Secondary, une référence à l'objet de jeu recherché peut être obtenue en utilisant "utils.returnluaObject" (nécessitant que tous les objets de jeu aient un nom de nom unique dans leur champ sérialisé Lua.LuaControllable )
Et enfin, il est possible de vérifier si une commande est autorisée sur cet objet en utilisant LuaControllable.CheckOperationLegality . Cette méthode doit être appelée avec le valeur System.Reflection.MethodBase.GetCurrentMethod().Name .
Et exemple de tout cela à partir de l'un des modules de base:
// String name used in Lua
public static int SetPositionRelative ( string controllerName , float x , float y )
{
// Get a reference to the controller
var controller = Utils . ReturnLuaObject ( controllerName ) ;
// Check the controller is not null
// System.Reflection.MethodBase.GetCurrentMethod().Name is required to be passed
if ( controller . controller != null )
{
// Check the operation is allowed
switch ( controller . controller . CheckOperationLegality ( System . Reflection . MethodBase . GetCurrentMethod ( ) . Name ) )
{
case false :
return 2 ; // 2 - Illegal operation
case null :
return 3 ; // 3 - Unknown operation
}
// Any code here
return 0 ; // 0 - Command success
}
return 1 ; // 1 - Command failed
}