Unity エディタ プログラムの書き換えを行なった時、更新後にコンソールに表示する

概要

Unityでプログラムの書き換えを行なった時、反映されるまでエディタで入力ができてしまう。
f:id:yasuaki-ohama:20160110085932p:plain
そのため、更新後にコンソールに表示するスクリプトを作成した。

機能

  • 更新完了後にコンソールに「スクリプト編集完了」と表示する
  • 実行中だった場合停止し「スクリプト編集完了 実行中のため停止」と表示する

f:id:yasuaki-ohama:20160110084405p:plain
f:id:yasuaki-ohama:20160110084951p:plain

詳細

クラスに以下のコードを加えるとのstaticコンストラクタを持つクラスに記述するとエディタ起動時に独自のスクリプトを実行できる

[InitializeOnLoad]

起動時にEditorApplicationのupdateに登録し毎秒約100回呼ばれる

    static FinishCompiling()
    {
        EditorApplication.update += Update;//エディタで再生中に毎秒約100回呼ばれるコールバック
    }

EditorApplication.isCompilingは数フレームtrueを返すので、最初に「false → true」に切り替わった時のみ表示するようにしている

    private static void Update ()
    {
        if (EditorApplication.isCompiling && !m_isCompiling) {
            ...
        }
        m_isCompiling = EditorApplication.isCompiling;
    }

Unity5 Android Build keystore 自動入力

f:id:yasuaki-ohama:20151223213933p:plain:w400
以下のスクリプトをEditorフォルダに入れるとUnity起動時に自動でkeystoreを入れることができる。
gist.github.com

Editorに置く理由はBuild時に中に含まれないから
Unity - マニュアル: 特殊なフォルダー名

android アプリをインストールできない

「USBストレージまたはSDカードにインストールできませんでした」についての記事
android 4.0.4で起きた。
f:id:yasuaki-ohama:20151206003909p:plain
[対処法]USBストレージまたはSDカードにインストールできませんでした
より「.android_secure/smdl2tmp1.asec」を消せばよいのだが...見つからない。
隠しファイル「.android_secure」を見つけて開くまではできんたがsmdl2tmp1.asecがみつからない。
ES ファイルエクスプローラ
f:id:yasuaki-ohama:20151206004814p:plain
f:id:yasuaki-ohama:20151206004817p:plain
f:id:yasuaki-ohama:20151206004815p:plain
Win, Macでも探したが、出てこない。
仕方がないのでSDカードの接続を切ったらダウンロードできた。
設定->ストレージ->外部SDカードのマウント解除
f:id:yasuaki-ohama:20151206004938p:plain
micro-SDと端末の相性が悪い?とかなんとか
Google グループ
リンク
ES ファイルエクスプローラー - Google Play の Android アプリ
[対処法]USBストレージまたはSDカードにインストールできませんでした
MacでAndroidの内部ストレージを見るにはソフトが必要|Mac - 週刊アスキー
Google Play ストアからダウンロードできない、Google Play ストアを読み込めない - Google Play ヘルプ

画像圧縮 imageoptim pngout pngyn

概要

3つのツールを利用して圧縮作業を行う

環境

適当な背景画像を準備
f:id:yasuaki-ohama:20151204165420p:plain
imageoptimの設定でpngoutにチェックを入れる
f:id:yasuaki-ohama:20151204165811p:plain
pngynにフォルダを投げ込んで実行
処理後imageoptimが自動的に走る
f:id:yasuaki-ohama:20151204165834p:plain

結果

32bit→8bitに変わるので、画像によっては色が変わる
before
f:id:yasuaki-ohama:20151204175132p:plain
after
f:id:yasuaki-ohama:20151204175214p:plain

画像 before after 比率
image1.png 4,402,754 バイト 1,185,173 バイト 26%
image2.png 4,033,370 バイト 1,069,769 バイト 26%
image3.png 3,760,386 バイト 787,001 バイト 20%

全体で26%まで減少

全体 容量
before 12,202,658 バイト(12.2 MB)
after 3,048,091 バイト(3.1 MB)

Unity5 画像圧縮 Crunched Compressed 16bit Truecolor

概要

Unity5で新しい圧縮方法(Crunched)が出た。
そのため、実際のアプリサイズ、apkのサイズを他の圧縮方式と比較する。
Unity - マニュアル: テクスチャ 2D

テスト環境

Unityバージョン 5.2.3p1
Android 6.0 (API 23)
Android SDK Tools 24.4.1
Android SDK Tools 23.0.1

Unityの画像圧縮機能

  1. Compressed
  2. 16 bit
  3. Truecolor
  4. Crunched 0
  5. Crunched 50
  6. Crunched 100

f:id:yasuaki-ohama:20151204151932p:plain

実際のアプリサイズとapkのサイズ

Unity - マニュアル: ファイルサイズの削減

利用サンプル

テストに以下のアセットを利用する
HDIconsPackFree
Asset Store
f:id:yasuaki-ohama:20151204151848p:plain
psdは利用しないので入れない
f:id:yasuaki-ohama:20151204151913p:plain

シーンの構成

f:id:yasuaki-ohama:20151204151901p:plain
アニメーションで画像を表示させる
f:id:yasuaki-ohama:20151204152219p:plain

結果(全体)

圧縮方式 実際のアプリサイズ apkのサイズ
Compressed Complete size 13.7 mb 100.0% 21,081,856 バイト(ディスク上の 21.1 MB)
16 bit Complete size 22.5 mb 100.0% 20,483,123 バイト(ディスク上の 20.5 MB)
Truecolor Complete size 40.0 mb 100.0% 25,424,022 バイト(ディスク上の 25.4 MB)
Crunched 0 Complete size 13.3 mb 100.0% 21,072,703 バイト(ディスク上の 21.1 MB)
Crunched 50 Complete size 13.7 mb 100.0% 21,081,856 バイト(ディスク上の 21.1 MB)
Crunched 100 Complete size 13.7 mb 100.0% 21,165,976 バイト(ディスク上の 21.2 MB)

結果(Unityファイル単体)

圧縮方式 サイズ
Compressed f:id:yasuaki-ohama:20151204182034p:plain
16 bit f:id:yasuaki-ohama:20151204181750p:plain
Truecolor f:id:yasuaki-ohama:20151204181722p:plain
Crunched 0 f:id:yasuaki-ohama:20151204182034p:plain
Crunched 50 f:id:yasuaki-ohama:20151204182034p:plain
Crunched 100 f:id:yasuaki-ohama:20151204182034p:plain

画質

(アニメーションにしてしまったため)検査しにくいため、別の記事で検証

考察

テスト画像が悪かったのかあまり良い結果が出なかった?。
画像によってはapkのサイズが「Compressed > 16 bit」になる
「Compressed」と「Crunched」の結果が大体同じ結果になった。
「Crunched 0」< 「Compressed」という結果になった。
また、以下の設定「Crunched 100」は実行に非常に時間がかかった。
f:id:yasuaki-ohama:20151204151932p:plain

補足

シーン上にアニメーションプレハブを置くまではTextureの容量はなかった。
Mipmapは減るのわかっているからやらなかった。

圧縮の詳しい記事
iosアプリサイズを節約する - テラシュールブログ
圧縮画像でメモリを節約&ローディング高速化しつつも画像を綺麗に表示する - テラシュールブログ

Mac ls パーミッションの横にある@アットマークを消す xattrコマンド

Macでよくみるパーミッションの横にある@アットマークの消し方

$ ls -l
total 136
-rwxr-xr-x@ 1 yasuaki.ohama  INTRA\Domain Users  11887 12  3 03:19 LINE_icon01.png
-rwxr-xr-x@ 1 yasuaki.ohama  INTRA\Domain Users   9431 12  3 03:19 LINE_icon02.png
-rwxr-xr-x@ 1 yasuaki.ohama  INTRA\Domain Users   9240 12  3 03:19 LINE_icon_Black.png
-rwxr-xr-x@ 1 yasuaki.ohama  INTRA\Domain Users   9395 12  3 03:19 LINE_icon_Green.png
-rwxr-xr-x@ 1 yasuaki.ohama  INTRA\Domain Users   9277 12  3 03:19 LINE_icon_White.png
-rwxr-xr-x@ 1 yasuaki.ohama  INTRA\Domain Users   6148 12  3 03:19 _DS_Store

xattrを使い、付加されているものを調べる

$ xattr *.*  
LINE_icon01.png: com.apple.quarantine
LINE_icon02.png: com.apple.quarantine
LINE_icon_Black.png: com.apple.quarantine
LINE_icon_Green.png: com.apple.quarantine
LINE_icon_White.png: com.apple.quarantine

xattr -d "消すもの" "ファイル"

$ xattr -d com.apple.quarantine *.*

結果

$ ls -l                            
total 136
-rwxr-xr-x  1 yasuaki.ohama  INTRA\Domain Users  11887 12  3 03:19 LINE_icon01.png
-rwxr-xr-x  1 yasuaki.ohama  INTRA\Domain Users   9431 12  3 03:19 LINE_icon02.png
-rwxr-xr-x  1 yasuaki.ohama  INTRA\Domain Users   9240 12  3 03:19 LINE_icon_Black.png
-rwxr-xr-x  1 yasuaki.ohama  INTRA\Domain Users   9395 12  3 03:19 LINE_icon_Green.png
-rwxr-xr-x  1 yasuaki.ohama  INTRA\Domain Users   9277 12  3 03:19 LINE_icon_White.png
-rwxr-xr-x@ 1 yasuaki.ohama  INTRA\Domain Users   6148 12  3 03:19 _DS_Store

参考
MacOSX - mac でファイルをDLすると付加される@の消し方 - Qiita
Macでlsした時のパーミッションにあるアットマークを消す。xattrコマンド。 - kanonjiの日記