tanaka's Programming Memo

プログラミングについてのメモ。

Projenyを少し使ってみて分かったことメモ

Projenyの概要や使い方は、以下にまとめてあります。

am1tanaka.hatenablog.com

am1tanaka.hatenablog.com

ここには、使ってみて気付いたことを書いていきます。

目次

Unity CollaborateとCloud Build、問題なく動作

表題の通りですが、問題なく使えました。Asset Storeのアセットを共有パッケージに組み込んだものも問題なしでした。

プラットフォームの切り替え時のエラー

WebGLにプラットフォームを切り替えようとしたときにエラーが発生しました。原因はHDDの容量不足でした。こちらの対応をして容量を削減したら、切り替え成功しました。

エラーが一度出ても、切り替えたら問題なく動いたこともありました。少々動作が不安定かも知れません。一度Windowsに切り替えてから、もう一度切り替えなおすなどすることで、直るかも知れません。

シーンが切り替わらない

事前に作成していたプロジェクトで発生しました。原因は、BuildSettingsに登録していたシーンのパスが変わったことでした。Projenyでは必ずパッケージに加える必要があるため、ルートにあるScenesフォルダーなどにシーンをまとめて入れていた場合、パッケージ名をパスの先頭に付加しないとアクセスできなくなるのです。

FileメニューのBuild Settingsを開いて、登録済みのシーンを削除して、設定しなおせば直ります。

Projeny.yamlの優先順位

Projenyの環境変数などの設定ファイルであるProjeny.yamlは、ホームフォルダー直下と、Projenyプロジェクト内にそれぞれ配置することができます。違う内容のファイルを配置することができて、片方に無い設定がもう片方にあれば、その設定を使うことができます。

そこで、デフォルトの設定をホームフォルダー直下のProjeny.yamlに書いておいて、それと別の設定をしたい場合はプロジェクトフォルダー内のProjeny.yamlに上書き設定ができないか試しました。結果、駄目でした。双方に設定があるものは、ホームフォルダー直下のものが優先されてしまいました。残念。。。

大きなAsset Storeのアセットを利用する場合

Projenyの魅力は、別々のプロジェクトで同じAsset Storeのアセットを利用する場合に、展開したリソースを共有できる点にあります。しかし、Unityで利用する際にはリソースを更にプラットフォームごとにリビルドしたテンポラリーファイルを持つことになり、これが元のリソース以上に容量を消費します。そのため、Ultimate VFXUI - Builderといった、多くの画像や音声リソースを持つアセットは扱いを注意する必要があります。

そのような大きなアセットは、共有ではなく、プロジェクトのパッケージに展開して、不要なリソースを削除した方がよいです。例えば以下のようにします。

  • Unityで、ProjenyメニューからPackage Managerを起動
  • 左の三角ボタンをクリックして、"Releases"を表示
  • "Packages"を、"[ProjenyPackagesDir]"などのプロジェクト個別のパッケージにして、そこにアセットをドラッグする
  • 右の三角ボタンを一回クリックして画面を切り替える
  • "Packages"に読み込んだアセットを、"Projects"の"Plugins Folder"にドラッグ&ドロップ
  • "Update Directories"ボタンをクリック

アセットの登録先のパッケージを、プロジェクト個別のものにするところがミソです。"[SharedUnityPackagesDir]"などの共有パッケージにしてしまうと削除した影響が他のプロジェクトにも作用してしまうからです。これだと、他のプロジェクトでリソースを共有するというウマみが無くなりますが、プラットフォームごとに巨大なテンポラリーファイルを作られるのに比べると小さな影響です。

Asset Storeのリソースが組み込まれることになるので、公開リポジトリーなどで管理するのは問題になる恐れがありますので、プライベートリポジトリーが使えないような場合は、.gitignoreに登録するための個別のパッケージをProjeny.yamlProjenyProject.yamlに設定して、Asset Storeのパッケージはそこに登録した方がよいかも知れません。

まとめ

2,3日使ってみた感じではこんなところでした。また新しいものが出てきたら追記していきます。