Maîtriser le développement d'application mobile Unity 3D: système d'objectifs modulaire

0 of 13 lessons complete (0%)

App Development

The Initialization class

La première classe que nous allons implémenter est la classe Initialization, elle a pour responsabilité de contenir toutes les références d'objets de cas d'utilisation (soit déposées et déplacées à travers l'éditeur Unity, soit obtenues par des références internes) pour les blocs Controller et Presenter.

Tout le travail est fait dans la fonction Awake de MonoBehaviour.
Ici, nous devons lier ensemble les blocs fonctionnels des cas d'utilisation et fournir un certain schéma de validation pour garantir que chaque référence est correctement configurée.

On définit la classe ObjectivesInitialization suivante:

using UnityEngine;

using UnityEngine.UI;


public class ObjectivesInitialization : MonoBehaviour {
 


// MARK: Controller Initialization



[SerializeField]

private ObjectivesController controller = null;



// MARK: Presenter Initialization



[SerializeField]

private ObjectivesPresenter presenter = null;



[SerializeField]

public Text gameObjectivesTitle; 



[SerializeField]

public Objectives.ObjectivesViewModel[] objectivesView;



[SerializeField]
 public Sprite starOn;



[SerializeField]
 public Sprite starOff;



// MARK: MonoBehaviour
 


void Awake() {


this.init();
 }



// MARK: Initialization



public void init () {


#if UNITY_EDITOR || UNITY_REMOTE
 if (this.controller == null)


Debug.LogError("ObjectivesController not set properly !");

if (this.presenter == null)
 Debug.LogError("ObjectivesPresenter not set properly !");


if (this.objectivesView == null)
 Debug.LogError("objectivesView not set properly !");


#endif
 


this.initController();
 }



private void initController() {



 



//map claim buttons actions to corresponding use case
 for (int index = 0; index < objectivesView.Length; index++)
 {


int currentIndex = index;


objectivesView[currentIndex].claimButton.onClick.AddListener(delegate { controller.claimReward(currentIndex); } );


}

}


}

Nous avons également choisi d'ajouter manuellement la fonction cible des boutons de réclamation pour réduire la durée du processus d'intégration du module. L'utilisateur n'a qu'à fournir les références de la vue des objectifs via l'inspecteur, l'événement onClick des boutons Unity UI sera associé aux délégués correspondants via le code de configuration pour permettre plus de flexibilité.

Remarque : Étant donné que les titres et les étoiles des objectifs de jeu peuvent être considérés comme facultatifs selon les besoins de votre projet,

nous ne les ajoutons pas à la liste de validation (nous aurions également pu les ajouter en tant que journaux d'avertissement).

Remarque : Si vous implémentez la méthode Awake() de MonoBehaviour à la fois dans les classes d'Initialisation et de Contrôleur, assurez-vous que l'appel de réveil de l'Initialisation est effectué avant celui du Contrôleur afin que toutes les variables soient correctement initialisées. Vous pouvez le faire en lui donnant une priorité d'exécution plus élevée dans Edit\Project Settings\Script Execution Order.

fr_FRFrançais