ある日...
無事New Userなれたしアバター改変に向けてVRCSDKのセットアップの仕方を学ぶぞ〜
早速公式に従ってCreator Companionを...って窓しか対応してないやん(半ギレ)
(参考記事:【VRChat】VCCをCLIで使う。)
よーしこれであとはvpm check unity
で認識するか確認...
[18:45:51 INF] Found No Supported Editors
[18:45:51 INF] Unity is not installed.
...はぁ?いやUnity 2022.3.6f1(当時ぶいちゃが要求してたバージョン)バッチリ入ってますが?~/.local/share/VRChatCreatorCompanion/settings.json
のpathToUnityExe
にもしっかり書きましたが?
ふざけんなぁぁぁぁぁぁぁぁぁぁ(魂の叫び)
概要
...なんて事があったので試しにggってみたところ、どうもmacOSやLinuxで同じ事が起きてると言うissueを発見。
その中で後者のissueにどうやって思いついたのか分からん解決方法が載ってたのでそれを日本語にする(+α)だけの雑な記事です。
VRChat日本Linux勢の助けになったら幸いです...
(2024/05/23追記)
実はAvatar Optimizerの作者(anatawa12氏)がVCC代替のALCOMを出しているので今はこれを使うのがいっちゃん楽だったりします。
以下、ALCOMを知る前の記事なので使えはしますけどこんなんやらんでもALCOM使えば済むのでご注意を。
(2024/05/25追記)
いつの間にかVRChatが要求するUnity 2022のバージョンが2022.3.22f1に上がってたので更新しました。
解決方法
結論から言うと、以下のスクリプトを実行するしてvpm
の設定を少しいじる(3/21追記)だけです(あら簡単)
(なんかスクリプト実行と設定いじりはセットだったみたいなので修正)
#r "nuget: LiteDB, 5.0.19"
using LiteDB;
using System;
using System.IO;
var user = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
// ↓こっからUnityのインストール先
var unity2019 = $"{user}/Unity/Hub/Editor/2019.4.31f1/Editor/Unity";
var unity2022_3_6 = $"{user}/Unity/Hub/Editor/2022.3.6f1/Editor/Unity";
var unity2022_3_22 = $"{user}/Unity/Hub/Editor/2022.3.22f1/Editor/Unity";
// ↑適宜変更してちょ
var isUnity2019Installed = File.Exists(unity2019);
var isUnity2022_3_6Installed = File.Exists(unity2022_3_6);
var isUnity2022_3_22Installed = File.Exists(unity2022_3_22);
var dataHome = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
var connect = new ConnectionString(dataHome + "/VRChatCreatorCompanion/vcc.liteDb");
using(var db = new LiteDatabase(connect)) {
if(isUnity2022_3_22Installed) {
db.GetCollection("unityVersions").Insert(new BsonDocument() {
{ "Path", unity2022_3_22 },
{ "Version", "2022.3.22f1" },
{ "LoadedFromHub", false }
});
}
if(isUnity2022_3_6Installed) {
db.GetCollection("unityVersions").Insert(new BsonDocument() {
{ "Path", unity2022_3_6 },
{ "Version", "2022.3.6f1" },
{ "LoadedFromHub", false }
});
}
if(isUnity2019Installed) {
db.GetCollection("unityVersions").Insert(new BsonDocument() {
{ "Path", unity2019 },
{ "Version", "2019.4.31f1" },
{ "LoadedFromHub", false }
});
}
}
あ、ちゃんとUnityのインスコ先は適宜変更してくださいね。Unity Hubから入れてればそのまま使えるはずですが。
あと元のスクリプトには何故かLiteDBのusing
が抜けていたので修正。これのせいで数十分無駄にした。
さて、どう見てもこれはC#であってスクリプトっぽくないですね。
しかし、dotnet-script
なるツールによりこのトップレベルにベタ書きされてるC#のコードをスクリプトの様にその場で実行できてしまうのです。
というわけでまず.NETとdotnet-script
をインストールしましょう。
.NET
vpm
を使っているのであればそもそも.NET 6のランタイムが入ってるはずなので(というか無いと動かん)大丈夫だとは思いますが一応。
Ubuntuの場合は公式リポジトリに最新版しか置かれてないので.NET公式PPAを追加しましょう。あとはdotnet-runtime-6.0
をインスコするだけです。
$ sudo add-apt-repository ppa:dotnet/backports
$ sudo apt install dotnet-runtime-6.0
dotnet-script
これはdotnet
コマンドからインストールします。ツールの導入が1行で完結するのは便利ですね。
$ dotnet tool install -g dotnet-script
スクリプトの実行
ここまで来ると次の1行叩くだけでスクリプトを実行できるようになります。
$ dotnet script SCRIPT_FILE
先程のスクリプトファイルを適当なファイル(suffixは.csx
みたいですね)に突っ込んでそのパスをSCRIPT_FILE
に入れてやれば動きます。
設定ファイルの編集(3/21追記)
vpm
(というかディレクトリ名的にVCC)の設定はデフォルトで~/.local/share/VRChatCreatorCompanion/settings.json
に(多分)置いてあるので各自vim
でもgedit
でも使って開いて、
"pathToUnityExe": "",
を
"pathToUnityExe": "/home/USER_NAME/Unity/Hub/Editor/2022.3.22f1/Editor/Unity",
にしたり(こっちはいらないかも)、
"preferredUnityEditors": {},
を
"preferredUnityEditors": {
"2019": "/home/USER_NAME/Unity/Hub/Editor/2019.4.31f1/Editor/Unity",
"2022": "/home/USER_NAME/Unity/Hub/Editor/2022.3.22f1/Editor/Unity"
},
にしたりして保存すればヨシッ!
結果
[20:48:39 INF] Unity is installed.
キタ———(゜∀゜)———— !!(死語)
データベース書き換えるとか、何喰ったら思いつくんだろ...
ともかく、先駆者兄貴には頭が上がりませんね...
それでは、またいつか。