【Unity】Unity Collaborateでリアルタイム通信コンテンツの制作フローを効率化

##Unity Collaborate
>Unity Collaborate は Unity Teams の一部です。Unity Team は、小さなチームがクラウド環境で Unity のプロジェクトを保存、共有、同期することを可能にします。Collaborate を使用すると、場所や役割に関係なくチーム全体がプロジェクトに貢献できます。

引用元：[Unity Collaborate](https://docs.unity3d.com/ja/current/Manual/UnityCollaborate.html)

要するに協力しながらの作業が簡単にできちゃうってことですが、今回は少し目的が違います。

今回の目的は**1人で2台のPCを使ってリアルタイム通信ゲームの開発を進める**ことです。

`Unity Collaborate`を使うまでは、
Googleドライブに実行ファイルをZip形式に圧縮したものをアップし、
もう１台のPC側で解凍&ダウンロードしてやってました。

ただ、そのやり方だと少しの変更を試すだけであっても
そこそこの待ち時間が発生してしまって無駄が多かったです。
一人で楽にリアルタイム通信の検証を行うにはどうすればいいか探していたところ、
下記記事を発見し、`Unity Collaborate`での開発を推奨していたので、
試してみたら本当に楽に進められました。

[【PUN】アバター生成・同期](https://qiita.com/mczkzk/items/75324cc31709ec329d26#%E9%96%8B%E7%99%BA%E6%96%B9%E6%B3%95)


ただ、設定が行ったり来たりでややこしかったので、メモを残します。


##設定手順

前提として、UnityID(Unityのアカウント)は既に持っていることとします。無料、有料は問いません。
また、今回のやり方だとUnityIDは2つ必要となります。それに伴って、メールアドレスも2つ必要です。

追加したいメンバーに招待を送り、共同で開発する権限を与えるようなイメージです。

###1台目のPCでプロジェクト作成
まずは1台目のPCでプロジェクトを作成します。
そして、タブの`Window`→`Genaral`→`Services`を選択します。
`Collaborate`を選択し、下記画像の黄色マーカーのリンクに飛びます。

![GotoDashboard.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/7e2a1e75-6c93-e300-92d4-d3806c9b0919.png)

###Unity Dashboard
ダッシュボードに飛んだら、`Users`を選んで次に進みます。

![CoUser.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/0c75a70d-faa6-b3d3-b940-adef96d1d5e7.png)

下記画像の箇所をページ内から探してリンクに飛びます。

![CoManageState.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/08aceaed-c895-d8c3-65f4-995c46a1d063.png)

###UnityID
先ほどのリンク先がUnityIDのマイページになっているはずです。
`メンバー&グループ`に進みます。

![CoUnityID.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/ef57d394-6c39-3abe-9e55-75ab578034b7.png)

そこから招待ページに飛びます。
メールアドレスと役割(Userでいいと思います)を選択して、招待します。
招待される側にメールが届きますが、特に承認のフローなどは必要ありませんでした。


![CoMenaberAdd.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/435f36ff-cabc-95c0-e34c-30aa52eb9626.png)


###再度、Unity Dashboardへ
ここでもう一度`Unity Dashboard`の`Users`に戻ります。
そして、先ほど招待したメンバーを下記画像の箇所から選択し、追加します。

![CoUserAdd.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/d1076f7d-87ce-40bd-deb5-a7dfc669e52a.png)

###2台目のPCでプロジェクト作成
次に2台目のPCでプロジェクトを作成します。
こちらは先ほどのUnityIDとは別のものでログインして作成します。
そして、先程と同様に`Services`を選択し下記画面を呼び出します。


![collab.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/f1242c32-f7b8-b042-4d0a-c663611a6fa0.png)


※ここで上記画面が出ない場合は、`SETTINGS`を選択し、`Unlink Project`すればOKです。
![CoUnLink.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/7746e844-a6fd-0299-dccd-5f5e43a6d56a.png)

あとは招待されたOrganizationを選択し、共同編集したいプロジェクトを選択すれば設定完了です。

![collab2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/ed0aa727-7469-fd92-8685-2405c431a33e.png)




##途中から導入した場合
今回、`Unity Collaborate`を知るのが遅かったので
片方のPCではプロジェクトはある程度作り終えた状態で、もう片方には全く何もない状態でした。

プロジェクトの大きさによってはかなり時間がかかりますが、
GitのCloneのようなことが可能です。
まっさらなプロジェクト側で`Collab`を選択し、左下の`View History`を選択します

![CoViewHistory.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/73049071-eb09-1688-9b17-3573e2b97d1c.png)

`Restore`を押すと「ローカルを置き換えますよ？」という警告が出て、承認するとデータを引っ張てきてくれます。

![CoRestore.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/5a7ea601-1094-2591-f160-39cc39a7b924.png)

##変更点の共有
片方で変更した内容をもう片方に反映させるために、`Publish`という作業を行います。
GitのPush的なやつです。

![CoPublish.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/fe70bdcd-7efa-b104-962e-af7d19782517.png)

アップロードが完了すると、もう片方のプロジェクトでは矢印が変更されて、`Update`が可能になります。

![Cloud.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/42812b80-c134-2251-6024-974d6d52745f.jpeg)

##実際に使ってみた感想
情報が無くて大変でしたが、知ってるかどうかの差なので
一度準備のフローを知った以上は二回目以降は超便利システムだと思いました。

今回の用途だと片方のプロジェクトしか変更しないので、
コンフリクトなどの問題は心配する必要はなさそうです。

もっと良い効率化があれば教えてください。


##参考リンク
[初心者向け！Unity Collaborateを使ってみる](https://qiita.com/warapuri/items/bfb2a7cdbbcebaa172cc)