注意
この記事の方法では、ビルド後のゲーム実行時にモデルが表示されないことがわかりました。
新しい記事を作ったため、こちらをご参照ください。
———-
Unityでゲームを作る際、3Dモデルや音声、テクスチャなど多くのアセットを使用すると思います。
ただ、Unityで作成されたゲームは比較的簡単にこういったデータを抽出することができてしまいます。
今回はアセットを暗号化して保護するツールである「Encrypter」を買ってみたので、内容を紹介いたします。
Unityで作成されたゲームのアセットにアクセスする
まずは実験として、ユニティちゃんを配置しただけのシーンをビルドします。


ビルドの設定は、Unityでプロジェクトを作成した時の初期設定になっています。
このビルドされたデータを、とあるツールを利用して解析してみます。

ゲーム内で了されているアセットが抽出できました。

モデルの情報も抽出できました。Exportの機能を備えてるため、モデルデータを出力することもできます。
なので、最悪の場合、有償で購入したモデルを抽出される可能性もあります。
ちなみに上記の抽出ツールは別に違法ソフトというわけではなく、Googleで検索すれば簡単に見つけることができます。
Encrypterを導入してアセットを暗号化する
次に、冒頭で紹介した「Encrypter」を導入して同じようにビルドしてみます。
まずはパッケージマネージャーよりEncrypterをインストールします

導入後、メニューの「Tools > Encrypter」が選択できるようになっているので、選択します。
するとメインウィンドウが起動します。

まずは新規作成ボタンを押して、設定を新規作成します。
すると、以下のような画面になります。
今回DLC(ゲーム本体に同梱しないアセット類)は不要なので、×ボタンで削除します。

Mainのほか、あらたに「TEX」という名前で行を追加しています。
それぞれunity-chan!フォルダ内のユニティちゃん本体とテクスチャ関連を設定しています。

上記の状態で画面下部の「アセットバンドルをビルド」をクリックします。
ビルドが正常に終了すると、UIの一部が青に変わります。

この状態で再度、Unityでビルドを行い、実行可能ファイルを作ってみます。
この時、スクリプトバックエンドがIL2CPPでないと警告が表示されるため注意して下さい。
(公開予定のあるゲームの場合は、スクリプトバックエンドをIL2CPPにしてください)

再度、解析ツールで中身を見てみる
ビルド後、同じように解析ツールに読み込ませてみた結果が以下になります。

閲覧可能なモデルの数が明らかに減っており、ユニティちゃんを構成するメッシュが閲覧不可になっていることが確認できました。
これなら、有償で購入したモデルについても簡単には抽出できないかと思います。
ちなみに
今回はユニティちゃんのモデルとテクスチャのみ保護対象としました。
というのも、ユニティちゃん全体に対して保護をかけようとしたところ、アセットバンドルのビルドエラーになってしまったからです。

エラーとなる理由まではわからなかったため、ひとまずはFBXやテクスチャなど、抽出されるとまずいものを選択して保護をかけるのがよさそうでした。
本記事内で「ユニティちゃん」が使用されてます。ライセンス表記は以下になります。
© Unity Technologies Japan/UCL