0

だから私は解決しようとしているこのジレンマを持っています。私は、Unity ゲーム エンジンを使用して常に 6 ~ 7 件のクライアント プロジェクトに取り組んでいるインディー ゲーム開発者です。私が経験している問題は、共有コードをプロジェクト間で同期させておくことです。現在の解決策は非常に「手動」で時間がかかります (すべてを更新するのを忘れるとエラーが発生しやすくなります)。解決策として SVN externals を調べ始めましたが、問題が 1 つあります。Unity ゲーム エンジンは *.meta ファイルを使用して、問題のファイルが各ゲーム内でどのように使用されているかを示すデータを保持します。

簡単な例として、サンプルのフォルダー構造を次に示します。

プロジェクト 1:

  • ROOT/アセット
  • ROOT/Assets/SharedCode
  • ROOT/Assets/SharedCode/SharedScript.cs
  • ROOT/Assets/SharedCode/SharedScript.meta

プロジェクト 2:

  • ROOT/アセット
  • ROOT/Assets/SharedCode
  • ROOT/Assets/SharedCode/SharedScript.cs
  • ROOT/Assets/SharedCode/SharedScript.meta

明白な/即時の解決策は、「SharedCode」フォルダーをSVN外部にすることです。発生する問題は、SharedScript.cs ファイルが両方のプロジェクトで同一である必要があることですが、SharedScript.meta ファイルはプロジェクト固有であり、ゲーム エンジンによって自動生成されます (したがって、すべてのメタ ファイルを「SharedCode」フォルダーの外部にある単一のフォルダー)。

これらのファイルは何百もあるので、各「共有」ファイルをそれ自体の外部のSVNとして扱うことを含まないソリューションが欲しいです。

私の現在の醜い解決策は、プロジェクト ツリー全体を SVN に保持することです。.meta ファイルを無視する GIT リポジトリであるサブフォルダーがあります。それはかなり醜いですが、私は頻繁にメインプロジェクトをコミット/更新し、git「ライブラリ」プロジェクトをコミット/プッシュ/プルするのを忘れています。

どんな提案でも大歓迎です!

4

2 に答える 2

4

コード用に1つのバージョニングシステムを使用し、ユニティプロジェクトのアセット用に1つのバージョニングシステムを使用しないのはなぜですか。次に、プロジェクト間で共有する必要のあるコードにsvn:externalsを使用します。

プロジェクト内のメタファイルを無視し、gitを使用してメタファイルをバージョン管理することができます。

于 2012-10-15T08:40:26.510 に答える
1

Why not make your "SharedCode" folder an SVN external - but without the "SharedScript.meta" file (and any other files that are project specific/auto-generated).

Now have the SharedCode.csproj point to a non-existent file, "$(SolutionDir)/<(blah)/SharedScript.meta". You can simply hand-edit the csproj to do this. Note that all your solutions MUST now generate this meta file to this relative path.

Now when you add this csproj to the solution of your choice you'll need to set up the project dependencies so that "SharedScript.meta" file is generated before your "SharedCode" project is built. Now there shouldn't be any issues.

Hope that helps!

于 2012-06-03T16:06:49.687 に答える