VRChat SDK を更新してみる（備忘録）

# はじめに
この記事はあくまで**筆者の備忘録**です。所々間違ってる表現などあったりしますが・・・許して下さい。

# VRChat SDK とは？
早い話、「VRChat」に「アバター」や「ワールド」をアップロードするために必要なライブラリ。
これがないとアップロードも何も出来ない。

## その SDK に更新が来たらどうすればいいの？
できればアップデートしたほうがいい。
古いバージョンでもアップロードとかはできるはずだけど・・・推奨はされなさそう。

以下より説明するのは SDK2 の[公式マニュアル](https://docs.vrchat.com/docs/updating-the-sdk#sdk2)をそれっぽく分かりやすくしたものになります。

# 更新方法

用意するもの:

* Unity 2018.04.20f1
* 更新したいプロジェクト（今回はアバター）
* 最新版の VRChat SDK（今回はVRCSDK2-2021.04.21.11.58）
* ちょっとのやる気

これら全てを用意したらもう作業は開始可能。早速始めましょう。
**ぼくは VRCSDK2 を用いてアバターを弄ったりしているので SDK2 向けの説明手順となります。
SDK3 使用者は[公式で公開されているマニュアル](https://docs.vrchat.com/docs/updating-the-sdk#sdk3)を見て作業してください。**
また、ぼくは Unity, VRChat 共に超絶初心者です。より良い方法や説明があるのかもしれませんが・・・ぼくは分かりません。
改善点などを見つけたらコメント等で教えて頂ければ幸いです。すぐ直します。

## 最低限の作業
まず、何があってもいいようにプロジェクトのバックアップをしましょう。
Unity Hub を使っているのなら、目的のプロジェクトを「エクスプローラーで表示」し、そのプロジェクトのディレクトリをまるごとコピーして保管しておけば問題ないです。恐らく。
直インストールしている場合も、目的のプロジェクトさえコピーしておけば、やらかしてしまったとしてもすぐバックアップから戻せば問題ない。と思う...。

## VRCSDK の更新の仕方
基本、[これ](https://docs.vrchat.com/docs/updating-the-sdk)にさえ従って作業すれば問題なく更新できるはずです。

### VRCSDK を消す
いきなり物騒な言葉が飛び出てくるが、これでも正しい手順ですよ。
目的のプロジェクトの**ディレクトリを**開いて、「Assets」ディレクトリに移動。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/82da4877-6f96-18e1-1875-d13886108136.png)
「VRCSDK」と「VRCSDK.meta」ファイルを削除します。
こいつら2つのファイルは、「VRChat SDK」のファイル本体。まずはこいつらを削除しないとそもそも更新ができないので消す。
**ファイルを完全に削除するとバックアップしてない限り元に戻せなくなる可能性があるので、絶対にバックアップをしておきましょう。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/e6960bd5-0fbe-59c9-657b-3f73c11df0ae.png)
こうなればおっけー**ではないです。VRChat Examplesもできれば削除したほうがいいかも。**
完全に削除し忘れてます。ちゃんと確認しましょう。

### 新しい VRCSDK をインポートする
さっき VRCSDK を消したので、次は新しい SDK をインポートする必要があります。
Unity Hub 等から Unity を起動し、目的のプロジェクトを開きましょう。
プロジェクトを開いて、アバターの prefab を選択すると、 Missing Script が何個かあるはずですが、これが正しいのでこのまま放置。
**Remove Componentとかしちゃいけないぞ。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/d8a7985a-d6b5-c429-9519-0b3d7fdaf08e.png)
画像の通りになってればおっけー。
次に、「Assets > Import Package > Custom Package...」と選択して新しい VRCSDK をインポートします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/41bb46cc-59ab-1aac-84dd-79a8dd8c915a.png)
あとはこれでダウンロードした最新の VRChat SDK を選択してインポートすればいい...のですが
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/cbc79011-cec0-d92e-f3a5-f25bf5a36fe4.png)
この画像みたいに、**全部のファイルにチェックが入ってなければ確定で何か消しそびれています。**
上の場合は、「VRChat Examples」ディレクトリが残っている（消しそびれた）せいで、全部インポートできなくなっています。
ということで一回「Cancel」して Unity も終了し、「VRChat Examples」ディレクトリを削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/3e3774ae-e89b-5284-219f-02d6d68332a9.png)
削除完了したら再度 Unity を起動し、SDK をインポート。以下の画像のように全部にチェックが入っていれば成功。このまま Import しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/ff9209d6-226f-029e-2ccb-0a213d612576.png)
これで SDK 自体の更新はおわり。でもまだ休むには早いぞ！

### 最後の仕上げ
SDK の更新自体はさっき言ったように終わりました。が、まだ最後の仕上げが残っています。
これをしないと後々めんどーくさいことになったりする（とおもう）ので、絶対やりましょう。というか公式マニュアルに書いてます。

新しい SDK のインポートが完了したら、**何も触らず**各シーンで「プレイボタン」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1120587/e612dfa1-93ff-86a2-db71-527c8da108b9.png)
↑コレ

これを押して、一旦プレイモードに入ってから終了。Unity から一部のシーンを更新する必要があるぞ！って言われるかもしれません。
もし言われたら大人しく従いましょう。ぼくは出ませんでした。
ここまで終わったら（ほとんど）終了！念の為 Unity を再起動しておきましょう。

### テスト
上までの作業が終了したら SDK の更新は完全に終わりです。取ったバックアップは念の為残して置くでもいいし、削除しても問題ないと思います。
でも消しちゃった場合、仮に失敗したらもう目も当てられない事態になるので、一回アバターを適当にアップロードしてテストしておきましょう。

ここの変更内容は何でもいいです。例えばアバターアップロード時の「VRCCam」をちょっと動かしてサムネイル画像を変えただけでもいいと思います。

それでアップロードして、正常にアップロード完了して VRChat 内からも問題ないことが確認できれば終了。お疲れさまでした。

# ところで、この記事誰が得するの？
誰も得しないです。