[Spine]読み込み用Jsonファイル内の絶対パスを相対パスにする

PhotoshopToSpineをいじる

Spine読み込み用Jsonの素材フォルダのパスは絶対パス

フォトショからSpine用のJsonデータを書き出す際に素材フォルダのパスを指定するのだが、このパスがJsonファイル上で絶対パスとして書き込まれてしまう。そのため書き出した素材ファイルを別の場所に移したりした際に素材のリンクが外れてしまい面倒なのでPhotoshopToSpineスクリプトを少し修正した。

スクリプト内でvar imagesDir = absolutePath(settings.imagesDir);という文を探して、その手前に以下のスクリプトを加筆する。ちなみにsettings.imagesDirには./から始まるパスが代入されている。absolutePath関数はその./の部分を絶対パスに変更させる。なのでその手前で./を省いた相対パスを変数folnamに代入させている。
Spineバージョン3.8にて作成

	// ☆☆☆☆☆☆加筆 開始☆☆☆☆☆☆

	//showSettingsDialog();にてダイアログに入力されたパスそのものが
	//settings.imagesDirに格納されている(./から始まるやつ)
	//それを変数XXXに入れてtrimにて無駄なスペースを取り除く
	//正規表現を使い./を取る .や/は特別な記号でもあるので
	//バックスラッシュ"\"を使って記号そのものとして扱わせる
	//./を取ったものをfolnamに代入する

	XXX = settings.imagesDir;
	XXX = trim(XXX);
	var folnam = XXX.replace(/\.\//g, "");

	// ☆☆☆☆☆☆加筆 終了☆☆☆☆☆☆

	var imagesDir = absolutePath(settings.imagesDir);

var json = ‘{ “skeleton”: { “images”: “‘ + imagesDir + ‘” },\n”bones”: [\n’;という文を探して、imagesDirの部分を先ほどのfolnamに変更する。

	// ☆☆☆☆☆☆加筆 開始☆☆☆☆☆☆

	//ダイアログで入力したパスの./を取り除いたものを
	//格納した変数folnamを下のjson変数の1行目代入部分に加筆している
	//本来folnamの部分はimagesDir(絶対パス)なので注意
	
	// ☆☆☆☆☆☆加筆 終了☆☆☆☆☆☆

	// Output skeleton.
	var json = '{ "skeleton": { "images": "' + folnam + '" },\n"bones": [\n';

[変更前]var json = ‘{ “skeleton”: { “images”: “‘ + imagesDir + ‘” },\n”bones”: [\n’;
[変更後]var json = ‘{ “skeleton”: { “images”: “‘ + folnam + ‘” },\n”bones”: [\n’;

書き出されたJsonファイルのパスが相対パスになった!

コメント