Exporter un projet Unity pour les plateformes Windows 8.1 / Windows Phone 8.1

 

Si vous lisez cet article dans le but d’apprendre comment exporter son projet Unity sur Windows 8.1 / Windows Phone 8.1, vous êtes au bon endroit. Afin de rendre cette session d’apprentissage plus efficace, je vous recommande de manipuler en parallèle : cela permet de mémoriser plus facilement les différentes étapes.

Pré requis logiciels

Il est nécessaire d’utiliser la configuration logicielle minimale suivante :

  • Windows 8.1 Pro. Bien qu’il soit possible d’utiliser une version non professionnelle de Windows 8.1, il est préférable d’utiliser une version Pro afin de bénéficier d’Hyper-V, la technologie Microsoft de virtualisation cliente, nécessaire pour l’utilisation de l’émulateur Windows Phone. Si vous disposez d’un téléphone Windows Phone 8.1 ou si vous ciblez uniquement la plateforme Windows 8.1, une version non professionnelle fera l’affaire. A noter que si vous êtes sur MAC, il est possible  de virtualiser un environnement de développement Windows 8.1 via des outils de virtualisation tels que Bootcamp, Parallels ou encore VMware.
  • Visual Studio 2013. L’outil de développement intégré qui permet notamment de générer et packager vos applications Windows et Windows Phone au format exigé pour une publication sur le store de Microsoft. Les versions Express et Community peuvent être téléchargées et installées gratuitement depuis ce lien. A noter que l’installation de cet outil intègre également les SDKs Windows Phone et Windows.
  • Unity. Afin de pouvoir exporter vos projets pour les plateformes Windows 8.1 / Windows Phone 8.1, il est nécessaire d’installer une version supérieure à la version 4.3. A l’heure où je rédige cet article, la dernière version téléchargeable est la version 5.0

Unity et l’exportation

L’éditeur d’Unity permet d’exporter votre projet sur différentes platformes Microsoft. Lorsque vous êtes dans l’éditeur Unity, sélectionnez dans le menu “File” le sous menu dénommé “Build Settings” (ou tapez la combinaison clavier CTRL + SHIFT + B si vous êtes du genre keyboard fanatic):

BuildSettingsMenu

S’ouvre alors une boite de dialogue listant toutes les plateformes d’exportation supportées :

BuildSettingsDialog

Lors du tout premier lancement, la liste “Scenes In Build” est vide et la plateforme d’exportation par défaut est “PC, Mac & Linux Standalone”. La première étape consiste à ajouter des scènes dans notre binaire. Si vous avez déjà crée un projet, vous disposez forcément d’au moins une scène (fichier d’extension “.unity”). Je vous invite donc à cliquer sur le bouton “Add Current” afin de sélectionner un ou plusieurs fichiers “.unity”. Ensuite il convient de sélectionner une plateforme. Dans notre cas, nous allons sélectionner la plateforme “Windows Store” et cliquer sur le bouton “Switch Platform”. Peut-être pensez-vous intérieurement :

  • Question : “Oui mais pourquoi ne pas sélectionner PC ?”
  • Réponse : tout simplement parce qu’un binaire ciblant la plateforme PC, même s’il peut s’exécuter sur Windows 8.1, ne pourra pas être distribué sur Windows Store : en effet à ce jour seules les applications modernes peuvent être publiées sur le Windows Store

 

  • Question : “Et Windows Phone 8 ? Si je choisis cette option, je pourrai exécuter mon application sur Windows Phone 8.1, non ?
  • Réponse : Oui c’est vrai MAIS votre application sera identifiée comme une application Windows Phone Silverlight et non comme une application universelle WinRT. Du coup il vous faudra gérer deux exports en parallèle, l’un pour Windows et l’autre pour Windows Phone. Par ailleurs comme Windows 10 fait la part belle aux développements d’applications universelles (UAP), vos maintenances d’applications futurs n’en seront que simplifiées si vous faîtes ce choix dès aujourd’hui . 

 

Nous obtenons alors la boite de dialogue suivante :

BuildSettingsDialogWindowsStore

Remarques :

  • J’ai choisi comme type “XAML C# Solutions” . J’aurai pu choisir “XAML C++ Solutions”. C’est une affaire de goût mais pas que ! En effet l’avantage du C# est que je peux débuguer mes scripts unity C# depuis Visual Studio. C’est bien pratique.
  • Ensuite j’ai sélectionné le SDK dénommé “Universal 8.1” afin de générer une unique solution Visual Studio permettant d’adresser à la fois Windows 8.1 et Windows Phone 8.1. D’autres choix sont possibles :
    • 8.0 pour adresser uniquement Windows 8.0
    • 8.1 pour adresser uniquement Windows 8.1
    • Phone 8.1 pour adresser uniquement Windows Phone 8.1 (RT)
  • Enfin j’ai coché “Unity C# Projects” afin de pouvoir débuguer sous Visual Studio

 

Avant d’exporter ma scène, je clique sur le bouton “Player Settings” afin de définir des métadonnées (nom d’application, icones, splashscreen etc). S’affiche alors la fenêtre “Inspector” pointant sur l’onglet de plateforme “Windows Store” (icône verte) :

PlayerSettingsInspector

Je ne vais pas énumérer tous les paramètres car ils sont nombreux. Sachez néanmoins que tous les paramètres configurés ici sont modifiables dans Visual Studio après exportation. Par exemple si vous cliquez sur “Icon”, vous pourrez définir les différentes icônes (ou tuile dans le jargon des app Windows store) depuis Unity et vous les retrouverez dans le répertoire “Assets” de votre solution Visual Studio. Idem pour les autres métadonnées comme le nom de l’application, la version, les splashscreens etc.

Il est temps de cliquer sur le bouton “Build” de la fenêtre “Player Settings”. Une fois le répertoire de sortie sélectionné (personnellement j’ai l’habitude de créer un répertoire “Build” puis un répertoire reprenant le nom de la plateforme cible e.g. ./Build/Universal8.1/ ), Unity démarre la génération du projet Visual Studio :

Building

Si vos scripts Unity contiennent des erreurs de compilation ou font référence à des plugins mal compilés, la génération échouera avec un message d’erreur associé. Si par contre la génération réussit, Unity ouvre alors l’explorateur de fichier pointant sur le projet Visual Studio fraichement crée :

BuildFolder

Une fois sous Visual Studio

Ouvrez le projet généré (fichier d’extension “.sln”) avec Visual Studio soit en double-cliquant ce fichier depuis l’explorateur, soit en sélectionnant le menu “Ouvrir Projet” depuis Visual Studio. Une fois ouvert, intéressons-nous à la fenêtre “Explorateur de solutions” :

SolutionExplorer

Ne fuyez pas !!!! Il y a beaucoup de fichiers mais en réalité seuls quelques uns vont retenir notre attention.  Tout d’abord, il faut repérer le projet actif … facile son nom est en caractères gras : “New Unity Project.Windows (Windows 8.1)” . Visual Studio est sympa : il vous indique le nom de la plateforme active ciblée (ici Windows 8.1). “Quoi ?” allez-vous me dire ; “Je pensais qu’en exportant en “Universal 8.1” j’obtiendrais une unique solution Visual Studio ?” Pas tout à fait mais presque : vous obtenez bien une unique solution Visual Studio contenant plusieurs projets dont les principaux sont :

  • New Unity Project.Windows (Windows 8.1)
  • New Unity Project.WindowsPhone (Windows Phone 8.1)

 

ProjetVisualStudio

Pour compiler/exécuter/packager la version Windows ou la version Windows Phone, il vous faudra activer l’un de ces deux projets, le projet Windows étant le projet activé par défaut. Ensuite vous pouvez accéder/éditer/débuguer vos scripts unity (fichier main.cs dans mon exemple ci-dessus) qui sont accessibles dans le répertoire “Assets” des deux projets Assembly-CSharp-metro-vs2013 (Windows 8.1) et Assembly-CSharp-windows-phone-8.1 (Windows Phone 8.1). A noter que ces scripts sont des liens pointant vers les fichiers physiques du projet unity : ils n’ont pas été dupliqués ce qui est une approche plutôt intelligente car cela permet de travailler de manière synchrone sur les deux éditeurs en parallèle (bien sûr, dès qu’on modifie une scène unity il est nécessaire de ré-exporter vers Visual Studio, mais cela n’écrase pas les scripts unity).

Pour l’exécution sur Windows 8.1, pensez à sélectionner “x86” comme type de plateforme cible avant de lancer une exécution, sinon vous aurez une erreur (ARM est en effet positionné par défaut) :

x86

Pour l’exécution sur Windows Phone 8.1, vous avez le choix entre l’exécution sur émulateur (avec différentes résolutions) ou sur téléphone réel connecté en USB :

arm

Important : pour tester votre application sur un téléphone réel vous devez absolument débloquer votre téléphone afin de le basculer en mode développeur. Pour cela il est nécessaire de :

  • Créer un compte Microsoft (équivalent d’un compte iTunes ou Gmail) : c’est facile et gratuit
  • Créer un compte développeur Microsoft : les frais d’inscription sont uniques pour les 2 stores de $19 (14€) pour 1 individu, $99 (75€) pour une entreprise, gratuit pour les étudiants via le programme DreamSpark. Un compte permet de débloquer jusqu’à 3 téléphones
  • Débloquer son téléphone via l’utilitaire “Windows Phone Developer Registration” inclus dans le sdk

 

A savoir

Unity a défini des directives de compilation qui vous permettront de différencier des comportements de code selon que vous cibliez Windows 8.1 ou Windows Phone 8.1. Pourquoi ? Par exemple pour détecter les touches de clavier sous Windows ou encore tester la touche “Retour” uniquement disponible sous Windows Phone 8.1. Ces deux directives sont les suivantes :

  • UNITY_WP_8_1 : Windows phone 8.1 only
  • UNITY_METRO_8_1 : Windows 8.1 only

 

Voici un exemple de code tout simple permettant d’afficher un menu pause lorsque l’utilisateur appuie sur le bouton “Retour”.

Code Snippet

  1. // Update is called once per frame
  2. void Update () {
  3.  
  4. #if UNITY_WP_8_1
  5.     while(Input.GetKeyDown(KeyCode.Escape))
  6.     {
  7.         pauseMenuEnabled = !pauseMenuEnabled;
  8.  
  9.         // Display Pause menu when Back key is getting pressed
  10.         if (pauseMenuEnabled)
  11.         {
  12.             PauseGame();
  13.         }
  14.         else
  15.         {
  16.             ResumeGame();
  17.         }
  18.     }
  19. #endif
  20. }

 

La gestion du bouton “Retour” est mappé sur la touche clavier “ESC”. Ce code sera ignoré pour la compilation ciblant Windows 8.1

Conclusion

L’export d’un projet Unity sur les plateformes Windows et Windows Store est simple à mettre en œuvre. Vous avez déjà des jeux Unity ciblant iOS et Android ? Alors n’hésitez pas à faire le test :-) Dans le prochain article je détaillerai l’utilisation du plugin UnityVS permettant d’utiliser l’IDE Visual Studio en lieu et place de l’éditeur par défaut MonoDevelop.