Tag Archives: Perl

Unityビルド後の処理について

0
Filed under Unity
Tagged as , , , ,

UnityでiPhoneビルドした後、その処理で同時にファイルの処理をしてほしいことがあります。
Unity PostprocessBuild
例えば、xcodeprojファイルの中をいじるとか、ですね。
その方法を調べてみたら、まず見つかったのは、PostProcessBuildAttribute という方法。

PostProcessBuildAttributeで後処理

上記リンク先をみてみると、C#とJavaScriptの処理が書かれているので、これを適当なスクリプトファイルとして、 /Assets/Editor/に配置すればよいということらしいです。
例えば、JavaScriptで処理を書く場合、下記のような内容のスクリプトを /Assets/Editor/myPostprocessBuild.js と保存してビルドすれば、OnPostprocessBuild が実行されるわけです。

1
2
3
4
5
6
7
8
9
10
11
12
// myPostprocessBuild.js
#pragma strict
import UnityEditor.Callbacks;
@PostProcessBuild
 
static function OnPostprocessBuild(target : BuildTarget, pathToBuiltProject : String )
{
  Debug.Log( "myPostprocessBuild ---" );
  Debug.Log( pathToBuiltProject );
 
  // pathToBuiltProject は、Unity-iPhone.xcodeproj のあるディレクトリへのパス.
}

確かに実行されることを確認しました!

が、
なんか、
使いにくい。。

書き出されたファイルとかを処理するのは、Unity JavaScript(と私の力量)じゃ無理な気がします。。

他に方法がないかと調べたら、Perlとかで処理する方法がありました!
それが次の方法。
unity postprocessbuild scripts

PostprocessBuildPlayerで後処理

上記リンク先によると、“PostprocessBuildPlayer”という名前(拡張子なし)のファイルを /Assets/Editor/ 以下に配置しておくと、そのファイル内に書かれた、シェルスクリプトかPerlスクリプトが実行される、というわけです。
shスクリプトなら、そこから色々なスクリプトやプログラムを呼び出せると思うのですが、もう一気にいろいろ処理しちゃいたいので、今回はperlを選んでみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl
 
use strict;
 
my $installPath = $ARGV[0];
 
# The type of player built:
my $target = $ARGV[1];
 
# What optimizations are applied.
# At the moment either "" or "strip" when Strip debug symbols is selected.
my $optimization = $ARGV[2];
 
# The name of the company set in the project settings
my $companyName = $ARGV[3];
 
# The name of the product set in the project settings
my $productName = $ARGV[4];
 
# The default screen width of the player.
my $width = $ARGV[5];
 
# The default screen height of the player 
my $height = $ARGV[6];

これですね!
しかし、私の環境ではprintの出力がUnityのコンソールに書きだされなかったので、ついでに下記のようなスクリプトを追記しました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Build Time.
my $buildTime = localtime(time);
 
# Debug print to log.txt
open( LOGFILE, "+>>log.txt" );
 
print LOGFILE "BUILD LOG --- $buildTime\n";
print LOGFILE "Install Path: $installPath\n";
print LOGFILE "Target      : $target\n";
print LOGFILE "Optimization: $optimization\n";
print LOGFILE "Company Name: $companyName\n";
print LOGFILE "Product Name: $productName\n";
print LOGFILE "Width       : $width\n";
print LOGFILE "Height      : $height\n";
print LOGFILE "\n";
 
close( LOGFILE );

プロジェクトフォルダにlog.txtというファイルが作成され、無事、下記のような出力がなされていることが確認されました!

1
2
3
4
5
6
7
8
BUILD LOG --- Wed Jun 26 15:58:20 2013
Install Path: /prj/201306-Test/Test
Target      : iPhone
Optimization: strip
Company Name: DefaultCompany
Product Name: 201306-Test
Width       : 1024
Height      : 768

これでできることが色々増えました!


[AD]

↓ちょっとした空き時間にiPhoneで見るのにベスト!

↓面白かったので全4巻購入しちゃいました!

限界集落(ギリギリ)温泉第一巻

限界集落(ギリギリ)温泉第一巻

カテゴリ:Kindle版

発売日:2013-01-05