web-dev-qa-db-fra.com

React Native avec Unity

Quelqu'un a-t-il une expérience en combinant React Native et Unity? Je cherche à démarrer un projet Unity qui est très UI Heavy et je pense à utiliser React Natif pour profiter de ses capacités d'interface utilisateur sur mobile et web.

Je suis curieux de savoir quel serait le flux de travail pour une telle approche.

30
Jimmy Xu

Finalement, après de nombreux essais, cela a été possible. Ce sont les étapes.

  • 1) À l'aide de cette lien , exportez Android pour Gradle. Sélectionnez Gradle dans la fenêtre Paramètres de construction et cochez la case Exporter le projet. Cliquez sur Exporter et sélectionnez le dossier de destination.
  • 2) Importez le dossier généré dans Android studio. Sélectionnez ok chaque fois que vous y êtes invité. Dans ce processus, vous rencontrerez les problèmes suivants
  • 2a) Gradle Sync a échoué en raison de problèmes org.gradle.api.internal.tasks. Résoudre en utilisant ceci lien
  • 3) Créez React Application native en utilisant cette lien
  • 4) Commencez à intégrer Android dossier exporté à l'intérieur de l'application native créée réagit en utilisant cette lien . Ne pas mettre à niveau Gradle en tant que Android studio will vous demander encore et encore. Vous rencontrerez les problèmes suivants. Ne passez pas par "Test d'intégration" jusqu'à ce que vous avez terminé avec # 5 ici.
  • 4a) Lors de la configuration de maven, utilisez cette URL pour l'URL de maven "$ rootDir /../ node_modules/react-native/Android".
  • 4b) Lors de la configuration de maven, si vous rencontrez un problème lié à javax.inject: javax.inject ". Utilisez ceci link .
  • 4c) Vous pouvez également rencontrer cette erreur "Conflit avec la dépendance 'com.google.code.findbugs: jsr305'". Vous pouvez résoudre ce problème lien .
  • 4d) Pendant la section d'intégration de code de ce lien, concentrez-vous sur la section suivante: Si vous utilisez un kit de démarrage pour React Native, remplacez la chaîne "HelloWorld" par celle de votre index.Android Fichier .js (c'est le premier argument de la méthode AppRegistry.registerComponent ()). Ici, vous devez remplacer par le nom du projet.
  • 5) Avant de passer par la section "Test de votre intégration", vous devez ajouter du code pour appeler MyReactActivity depuis UnityActivity. Cela lien vous aidera.
  • 6) Passez par la section "Testez votre intégration" du lien fourni dans # 4. Vous pouvez rencontrer les problèmes suivants.
  • 6a) impossible de charger le script à partir de l'index des actifs.Android.bundle. Utilisez ceci lien .
  • 6b) n'a pas pu se connecter au serveur de développement sur Android. Utilisez ceci lien .
12
Shaunak Das

Je ne sais pas comment un jeu Unity est conçu pour iOS, s'il utilise Cocoa Touch pour le rendu de ses classes principales.

Si c'est le cas, et que vous avez accès ou la possibilité de rendre un UIViewController, vous pouvez rendre votre React application native. La seule chose que vous auriez à faciliter est de configurer la communication entre les deux applications.

Voici un exemple de rendu d'un composant d'interface utilisateur natif dans une application React Native qui peut vous aider. http://moduscreate.com/leverage-existing-ios-views-react- native-app /

3
stan229

Consultez mon article sur Medium

J'ai montré avec un exemple sur la façon d'intégrer React Native avec Unity 3D étape par étape. Mon objectif était d'utiliser le natif React au sein de l'Unity3D comme un module qui est assez pratique si vous allez travailler intensivement sur Unity 3D. J'espère que cela aidera quelqu'un qui viendra plus tard.

3
Akbar Sha Ebrahim

J'étais également curieux et j'ai créé un exemple de projet sur la façon de le faire pour Android: https://github.com/marijnz/unity-react .

Si c'est une option viable, cela dépend au moins de:

  • Pendant combien de temps le projet durera, React et Unity doivent être mis à jour et cela devient probablement plus difficile au fil du temps.
  • La quantité de sdk/dépendances du projet.
  • Si vous voulez aussi faire iOS.

En général, j'éviterais probablement de suivre cette voie. Même si l'exemple semble assez simple maintenant, c'était pénible d'y arriver (comme le suggère déjà la réponse de Shaunak;))

1
Marijn Zwemmer