Unityのチームワーク


30

バージョン管理のないUnityプロジェクトがあり、プロジェクトで作業できるように別の開発者と共有する必要があります。

Unity Assetsでうまく機能する戦略は何ですか?


:私はこの記事があなたにいくつかのヒントを与えるだろうと思いますva.lent.in/blog/2011/12/13/...
デン

2
DropBoxはバージョン管理をサポートしています。この機能は「Pack-Rat」と呼ばれますが、無料ではありません。初心者のインディー開発者へのアドバイスについては、これまでに多くの質問がありました。少し歩き回ることをお勧めします。最後にGameDev SEへようこそ!
クアジイルファン

前後にプレハブやシーンを移動する際に、資産サーバなしでいくつかの問題があるかもしれません
Sidar

回答:


17

Unityには、バージョン管理を適切にサポートするための機能が組み込まれています。

「ファイル」->「プロジェクト設定」->「エディター」に進み、外部バージョン管理を有効にします。


4
これはプロ専用機能ですか?Unity 2.6のフリー/インディーズWindowsバージョンでは、このメニュー項目は表示されません。
ジェームズ

2011年1月30日現在、Proのみです。unity3d.com/support/documentation/Manual/…の
ojrac

11
Unityの最新の開発者プレビュー(3.5 RC1)は、無料版でのバージョン管理をサポートするために変更を加えました。変更ログ(unity3d.com/unity/preview/notes)から:ライセンス:汎用外部バージョン管理(.metaファイル)が無料版で利用可能になりました。
慢性ゲームプログラマー

2
将来の訪問者のためだけに、この回答の日付に注意してください。今では時代遅れです。現在、設定をオンにする必要はありません。フォルダ「アセット」(バージョン管理が隠された.metaファイルを選択していることを確認してください)と「プロジェクト設定」をバージョン管理し、それ以外はすべて無視します。
冗談14年

10

Gitを使用することをお勧めします。Gitは無料で最適です。

しばらく前に、ブログでバージョン管理(Gitを使用)について書きました

長い話:

外部バージョン管理を有効にしますファイル->プロジェクト設定->エディターそして、レポジトリに不要なものを避けるために.gitignoreファイルを作成します(これは本当に必要ではありませんが、開発中は高価になります)。

ファイルは次のようになります。

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

#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs

これは、ほぼ同じである.gitingoreユニティ・プロジェクトのためのIの使用が、いくつかのommissionsと:[Bb]uild/*.booprojsysinfo.txt。私が使用しているものは、Unity用のGitHubの新しいレポテンプレート(github.com/github/gitignore/blob/master/Unity.gitignore)に基づいていると確信しています(iOSを対象とする場合)。
スリップD.トンプソン14

ブログの内部サーバーエラー。
サントシュクマール

4

Unity 3.0はSubversionでうまく動作するように設定されています。(少なくとも以前よりも良い)これがプロ版だけにあるかどうかはわかりませんが、確認する必要があります。

ただし、一般的に、最も推奨されるバージョン管理システムはUnity Asset Serverです。


4

Unity固有-常に異なるシーンと異なるコードファイルで作業し、他の人の変更を手動でマージします。両方が同じシーンで作業する必要がある場合は、複製してテストとしてコピーを使用します。それ以外の場合、両方が同じシーンを変更すると、一方の人の変更が他方を上書きします。ソースファイルにソース管理を使用することはできますが、作成後はファイルシステム内またはUnity経由で移動しないでください。

初心者のアドバイス-適切なdiff / mergeツール(私はWinMergeが好きです)を入手し、それを使用して他の人が行った変更を確認し、競合するファイルの変更を手動でマージします。中央のドキュメントスペースをセットアップします。Google執筆ドキュメントまたはWiki、およびドキュメントをそこに保管します-ドキュメントには、最低限、基本的な機能リストを含めて、目的を把握し、理想的には機能リストから派生したタスクリストと明確な指示を含める必要があります誰がタスクに取り組んでいるのか。お互いに話し合い、だれがどのタスクに取り組む必要があるかについて大まかな考えをつかみ、完了したらリストから外します。リストを再検討して再評価し、すべてがまだ有効かどうか、優先順位を変更する必要があるかどうかを確認してください。


ありがとうございました!あなたは私の両方の問題について私に素晴らしいアドバイスをくれました。
nosferat

4

私は、Defective Studiosと呼ばれるチームと協力しています。私たちは何年も同じ問題に苦労してきましたが、つい最近、ついにやってきて、ゲームオブジェクトのマージを支援する拡張機能を書き始めました。

基本的に、アプローチは、各ゲームオブジェクト、コンポーネント、およびプロパティを並べて比較するウィンドウにインスペクターのようなインターフェイスを作成し、値(またはオブジェクト全体)を一方から他方にコピーするボタンを提供します。SerializedPropertyクラスに精通している場合、ここで作業の大部分を行っています。私たちは、基本的には、左右の側との間で折りたたみ式の状態を同期化するGUIを作成し、垂直方向のスペースを作成し、どこGameObjectComponent右側または左側にのみ存在します。比較関数は、各レベルで平等をチェックし、平等の状態に応じて各行の背景を赤または緑に変えます。子に違いが含まれる行も赤になります。また、ツリーを再帰的に検索し、子が異なるまたは違いがあるすべてのオブジェクトを展開するための気の利いたボタンも含まれています。

同様に、特定のコンポーネントタイプを比較から除外できるマスクフィールドのセットがあります。名前、レイヤー、タグなどのGameObject属性も比較されます。とを使用SerializedObjectSerializedPropertygameObjectのプロパティをループし、インスペクターで描画されるように描画します。これにより一貫性が確保され、コーディングが非常に簡単になります!

ここに画像の説明を入力してください

最後の気の利いた詳細の1つは、比較プロセス(オブジェクトが読み込まれ、変更が行われるたびにトリガーされる)が、EditorWindow.Update関数によって更新されるアドホックコルーチンで実行されることです。そのため、非常に複雑なオブジェクトを比較する場合、ウィンドウはエディターをロックしません。これは、オブジェクトを数百(または千!)の子供と比較する場合に必須でした。全体として、それは私の友人が言うのを好む「レゴプロジェクト」のようなものでしたが、間違いなく私たちのコラボレーションワークフローの一部となった非常に貴重なツールです。

ツールであるUnity MergeはUnify wikiに文書化されています。これには、フィードバックと問題の報告のためのロードマップと電子メールアドレスが含まれています。複雑なマージに本当に苦労しているなら、それを試してみて、あなたの考えを教えてください!また、私はそれをDLLに組み込むことを気にしませんでしたので、ソースを自由に調べてください。アドホックコルーチンの実装とSerializedProperty操作、および私が必要とするいくつかのGUIトリックは、エディター拡張ツールキットの大部分です。ユーザーが持つ可能性のある変更/改善に非常に興味があるので、連絡してください!


1
以前の「リンクのみ」の回答を改善してくれてありがとう。
マイケルハウス

1

資金があれば、プロ版のUnityを備えたAssetサーバーはかなりまともです。私は過去に大規模な複数人プロジェクトでそれを使用し、それは仕事をしました。バニラのバージョン管理については、期待どおりの動作をしました。

UnityプロジェクトでSVNリポジトリを使用してみましたが、少し面倒でした。しかし、アイデアを機能させる前に、アイデアを廃棄しました。Unityは多くのバックアップファイルを保持していますが、それらをサーバーに同期しなかった場合に何が起こるかを調べるのに時間をかけたくありませんでした。ちょっとしたフィネスで、それは実行可能かもしれませんが、うまく機能する経験はありませんでした。

DropBoxの無料機能を使用して小さなプロジェクトを作成しました。緊張しましたが、問題はありませんでした。そして、そのプロジェクトに実際のバージョン管理機能が必要になったとは思わないので、ファイルのリバートやマージがどのように行われるかについてはあまり話すことができません。


1

Dropboxは(コミットごとではなく)ファイルごとのバージョン管理をサポートし、Unityでうまく動作します。最初は無料(2ギガバイト)で、その後はかなり安い(50ギガバイトで約10ドル)。バージョン履歴にアクセスするには、PackRatアドオンが必要です。

SVN、CVS、GITなどと同様に、開発の主要な各段階(たとえば、週末、マイルストーンの終わり)に到達したときにタグフォルダーを作成する必要があります。前述とは異なり、そうしないとそのような段階に戻すことははるかに難しくなります。なぜなら、すべてのファイルを個別に元に戻す必要があるからです。開発中はこの点に留意してください。AssetServerに費用を支払うことなく簡単に時間を過ごすことができます。


しかし、これはすっごくつらいです。Unityは、別のコンピューターでシーンを開くたびにシーンを再構築する必要があります。これにより、コミットごとに多くの場所でライブラリフォルダーが変更されます。ライブラリフォルダーを無視するのは良いことですが、バージョン管理されたシーンファイルはありません。私のチームはあきらめて、多くのプロライセンスを購入し、資産サーバーを使用しました。
ブランドン

@brandonプロジェクトのサイズに依存すると思います。
エンジニア

1
確かに、予算が限られた数人の
開発者の場合

しかし、2 GB以下のプロジェクトに取り組んだことがありますか?含めるモデルとテクスチャはどうですか。bitbucket.comを見て、gitの学習を開始してください!
-XandruCea

絶対に。私の経験では、Android / iOSプロジェクトは間違いなくそのサイズに収まります(この回答を書いた年)。また、友人を招待することで、Dropboxでより多くのスペースを獲得できます。
エンジニア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.