web-dev-qa-db-fra.com

Comment utiliser le contrôle de code source Git for Unity3D?

Quelles sont les meilleures pratiques pour utiliser le contrôle de la source Git avec Unity 3D, en particulier pour gérer la nature binaire des projets Unity 3D? Veuillez décrire le flux de travail, quels chemins doivent être inclus dans .gitignore, quels paramètres doivent être définis dans Unity et/ou le projet, ainsi que tout autre élément particulier à noter.

Remarque: je me rends compte que l’utilisation d’Asset Server est la méthode recommandée par Unity, mais j’aimerais utiliser Git pour diverses raisons. S'il vous plaît pas de réponses cet état ou arguer que je devrais simplement utiliser le serveur de serveurs. Asset Server n'est vraiment pas une option pour moi.

466
PressingOnAlways

Ce qui suit est un extrait de mon blog personnel .

Utiliser Git avec des jeux 3D

Mise à jour octobre 2015: GitHub a depuis publié un plugin pour Git appelé Git LFS qui traite directement du problème ci-dessous. Vous pouvez maintenant facilement et efficacement la version de gros fichiers binaires!

Git peut très bien fonctionner avec des jeux 3D prêts à l'emploi. Cependant, la mise en garde principale est que la gestion de versions de fichiers multimédias volumineux (> 5 Mo) peut être un problème à long terme, car votre historique de validation enfle. Nous avons résolu ce problème potentiel dans nos projets en ne versant que l'actif binaire lorsque celui-ci est considéré comme final. Nos artistes 3D utilisent Dropbox pour travailler sur des ressources WIP, à la fois pour la raison ci-dessus et parce que c'est beaucoup plus rapide et plus simple (pas de nombreux artistes voudront utiliser Git!).

Flux de travail Git

Votre flux de travail Git est vraiment quelque chose que vous devez décider vous-même en fonction de votre propre expérience en équipe et de la manière dont vous travaillez ensemble. Pourtant. Je recommanderais fortement la méthodologie de Git Flow nommée de manière appropriée comme décrit par l'auteur original ici .

Je n’entrerai pas trop dans le détail ici sur le fonctionnement de la méthodologie, car l’auteur la décrit parfaitement et en quelques mots afin de faciliter la compréhension. Je me sers de mon équipe depuis un certain temps maintenant, et c'est le meilleur flux de travail que nous ayons essayé jusqu'à présent.

Application client graphique Git

C’est vraiment une préférence personnelle ici, car il y a pas mal d’options en termes d’interface graphique Git ou d’utilisation d’une interface graphique. Mais je voudrais suggérer le libre application SourceTree car il se branche parfaitement avec l’extension Git Flow. Lisez le tutoriel SourceTree ici sur la mise en œuvre de la méthodologie Git Flow dans leur application.

Unity3D Ignore les dossiers

Pour une vérification de version à jour fichier Unity.gitignore maintenu par Github sans spécificité du système d'exploitation.

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Paramètres Unity3D

Pour les versions de Unity 3D v4.3 et supérieures:

  1. (Ignorez cette étape à partir de la v4.5) Activez l'option External dans Unity → Preferences → Packages → Repository.
  2. Ouvrez le menu Edit et sélectionnez Project Settings → Editor: .
    1. Basculez Version Control Mode en Visible Meta Files.
    2. Basculez Asset Serialization Mode en Force Text.
  3. Enregistrez la scène et le projet à partir du menu File.

Vous souhaitez migrer votre référentiel existant vers LFS?

Consultez mon article de blog pour les étapes sur la façon de le faire ici .

Configuration additionnelle

L’un des rares désagréments majeurs que l’on ait à utiliser Git avec les projets Unity3D est que Git ne se soucie pas des répertoires et laissera volontiers des répertoires vides après avoir supprimé leurs fichiers. Unity3D créera des fichiers * .meta pour ces répertoires et peut entraîner une bataille entre les membres de l'équipe lorsque Git commet continue d'ajouter et de supprimer ces méta-fichiers.

Ajoutez ce crochet post-fusion Git dans le dossier /.git/hooks/ pour les référentiels contenant des projets Unity3D. Après chaque extraction/fusion de Git, il examinera quels fichiers ont été supprimés, vérifie si le répertoire dans lequel il existait est vide et, le cas échéant, supprimez-le.

495
S.Richmond

Dans Unity 4.3, vous deviez également activer l'option Externe à partir des préférences, mais depuis Unity 4.5, cette option a été abandonnée. Le processus de configuration complet ressemble à ceci:

  1. Basculer vers Visible Meta Files dans Editor → Project Settings → Editor → Version Control Mode
  2. Basculer vers Force Text dans Editor → Project Settings → Editor → Asset Serialization Mode
  3. Enregistrer la scène et le projet à partir du menu File

De plus, notre équipe utilise un fichier .gitignore un peu plus étendu:

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Notez que les seuls dossiers que vous devez conserver sous contrôle de source sont Assets et ProjectSettings.

Vous trouverez plus d'informations sur le maintien de Unity Project sous contrôle de source dans this post .

55
zasadnyy

Qu'est-ce que GIT?

Git est un système de contrôle de version distribué (SCM) gratuit et à source ouverte développé par Linus Torvalds en 2005 (fondateur du système d'exploitation Linux). Il est créé pour contrôler tout, des projets de toutes tailles, avec rapidité et efficacité. Des entreprises leaders telles que Google, Facebook et Microsoft utilisent GIT au quotidien.

Si vous voulez en savoir plus sur GIT, cochez ceci Tutoriel rapide ,

Tout d’abord, assurez-vous que votre environnement Git est configuré. Vous devez configurer à la fois votre environnement local et un référentiel Git (je préfère Github.com).

Application client GIT Mac/Windows

Pour l’application client GIT gui, je vous ai recommandé d’utiliser Github.com,

GitHub est l'endroit idéal pour partager le code avec des amis, des collègues, des camarades de classe et des inconnus. Plus de cinq millions de personnes utilisent GitHub pour créer ensemble des choses incroyables.

Paramètres Unity3d

Vous devez faire ces réglages

Basculez sur les méta-fichiers visibles dans Édition → Paramètres du projet → Editeur → Mode de contrôle de version.

enter image description here

Activer l'option externe dans Unity → Préférences → Packages → Référentiel

enter image description here

Activez l'option Forcer le texte dans Édition → Paramètres du projet → Editeur → Mode de sérialisation des actifs.

enter image description here

Source: Utilisation de Git avec le contrôle de la source de jeux 3D

33
NabeelSaleem

Pour ajouter à tout ce qui est indiqué, il est également idéal d’utiliser git lfs avec Unity. Je l'utilise depuis sa sortie et je n'ai eu aucun problème avec.

Vous voudrez ajouter ce .gitattributes à côté de votre fichier .gitignore

*.cs diff=csharp text
*.cginc text
*.shader text

*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf

*.a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.FBX filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text

C'est ma liste de roulement. Si vous utilisez des fichiers binaires supplémentaires non répertoriés, ajoutez-les.

J'ai également des fichiers configurés pour utiliser yamlmerge, vous devrez le configurer. Vous pouvez lire à ce sujet ici: http://docs.unity3d.com/Manual/SmartMerge.html

19
rygo6

J'ai pensé que je pourrais poster un .gitignore plus simple pour tous ceux qui sont intéressés:

# Ignore Everything
/*

# Except for these:
!/.gitignore
!/Assets
!/Packages
!/ProjectSettings
9
Get Off My Lawn

Nous avons maintenant une intégration transparente à l’unité avec l’extension Github to Unity ... https://unity.github.com/

La nouvelle extension GitHub for Unity apporte le flux de travail GitHub et plus encore à Unity, prenant en charge les fichiers volumineux avec Git LFS et le verrouillage de fichier.

Au moment de la rédaction, le projet est en alpha, mais reste utilisable pour des projets personnels.

8
Bhupen

Je préférerais que vous utilisiez BitBucket, car ce n'est pas public et il y a un tutoriel officiel de Unity sur Bitbucket.

https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository

j'espère que cela t'aides.

5
Nipun David

Principaux points à prendre en compte lors de l’utilisation de git pour le contrôle de version du code source de Unity-3d:

(A) NE PAS archiver le dossier Bibliothèque . J'ai commis cette erreur plusieurs fois dans le passé et j'en ai souffert! Supprimez OR déplacez le dossier de la bibliothèque avant d’ajouter votre projet/vos fichiers à git.

(B) Utilisez "Fichiers méta visibles" - pour les versions les plus récentes de Unity - 5.3.4 et les versions ultérieures, cela se produit par défaut. Pour certaines versions antérieures, vous devez modifier les paramètres sous: Édition-> Paramètres du projet-> Contrôle de version

(C) Utilisez un fichier .gitignore pour Unity, afin de vous assurer que l'intégrité physique est maintenue et que les fichiers ne sont pas ajoutés inutilement - sous Android. _/tizen - ajoute des règles pour exclure les fichiers APK et TPK de l'ajout au référentiel. Google environ pour un fichier .gitignore pour l'unité OR sinon utilisez ce modèle .gitignore pour Unity fourni par GitHub: https://github.com/github/gitignore/blob/master/Unity. gitignore

(D) Assurez-vous que le fichier .gitignore est ajouté au référentiel en tant que premier fichier ajouté - car j’ai personnellement manqué l’ajout du fichier .gitignore. Avec le recul, réfléchissez beaucoup aux raisons pour lesquelles cela s’est produit - mais aujourd’hui, je ne fais que copier et ajouter un fichier .gitignore comme première étape de la configuration du référentiel.

Alors ... pour préparer un projet Unity pour git, procédez comme suit:

(1) Aller au dossier du projet

(2) Tapez git init.

(3) Copiez le fichier .gitignore: Sous MacOS: cp ~/Téléchargements/.gitignore Sous Windows: copiez c:\Utilisateurs [votre nom d’utilisateur]\Downloads.gitignore.

(4) ajouter Gitignore

(5) ajouter git *

J'espère que cela aide ... tout le meilleur!

5
Naligator

Edit -> Project Settings -> Editor

Définissez le contrôle de version sur les méta-fichiers. Définissez la sérialisation des actifs pour forcer le texte.

Je pense que c'est ce que tu veux.

5
afpro

Vous pouvez utiliser Github pour Unity , une Unity Extension qui apporte le git flux de travail dans l'interface utilisateur d'Unity.

Github pour Unity vient de publier la version 1.0 de l'extension.

4
Kyle B

Seuls les dossiers Actifs et ProjectSettings doivent être sous le contrôle de version git.

Vous pouvez faire un gitignore comme ça.

[Ll]ibrary/
[Tt]emp/
[Oo]bj/

# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.userprefs

# Mac
.DS_Store
*.swp
*.swo

Thumbs.db
Thumbs.db.meta

.vs/
4
EllisonLee

Unity fournit également son propre contrôle de version Source. Avant l'unité5, c'était l'unité ServerAsset, mais maintenant sa valeur est dépréciée. et lancez un nouveau système de contrôle SVN appelé Unity Collaborate. Cependant, le problème principal de l’unité et de tout SVN est la mise en train et la fusion de la scène. mais non de svn nous donnent le moyen de résoudre ce genre de conflits ou de fusionner la scène. dépend donc de vous avec quel SVN vous êtes familier. J'utilise l'outil SmartSVN sur Mac. et tortue sur les fenêtres.

enter image description here

2
Shahbaz Ali

Il suffit d'ajouter sur le sujet de Gitignore. La méthode recommandée ignore uniquement Library et Temp, s’il s’agit de la racine de votre projet git. si vous êtes comme moi et avez parfois besoin d'un projet d'unité pour faire partie du repo, et non de l'ensemble du repo, les chaînes correctes dans gitignore sont les suivantes:

**/[Tt]emp
**/[Ll]ibrary
**/[Bb]uild
0
zambari