愚弟ブログ

アウトプットすることで自分の知識を深めていく

Unity(5.5)×iOSでFirebaseAnalyticsがうんともすんとも言わない

サンプルは多いほうがいいのでメモ(いつもの)

Unity×iOS×FirebaseでFirebaseコンソールのAnalyticsイベントが全然取得できなかった話。

環境

Unity5.5.5p2

mac

ターゲットプラットフォームはiOS

 

結論

 Firebaseの何かを使わないと出なかった。

SetAnalyticsCollectionEnabled()

とか

LogEvent()

とか。

 

感想

Androidは何もせずともイベントが取得できていたので完全に騙されましたわ。

既存Unityプロジェクト(5.5)にFirebaseを突っ込んだ時のエラー

解決が難しくて気が狂いそうだった(小並感

クオリティどうあれサンプルは多いほうがいいのでメモ。

 

環境

Unity5.5.4f1
Windows 10 Home

昔のGoogleAnalytics入ってる

GooglePlayService

ターゲットプラットフォームはAndroid

 

ぼくをくるしめたエラーたち

なんか似た名前のやつあるよエラー

Error somewhere in the process of creating the gradle build, executing it, and copying the outputs.
中略
Error (-1):
Observed package id 'extras;google;m2repository' in inconsistent location '[android-sdkのパス]\extras\google\m2repository.backup' (Expected '[android-sdkのパス]\extras\google\m2repository')

AndroidSDK絡みのエラー

android-sdkフォルダに似た名前のファイルやらフォルダが混ざってた。
上記例だとm2repository.backup

ぼく、こんなファイルつくったかな?

あとはbk_toolsとかいうフォルダもあった。

こっちは昔作った記憶あり。

 

android-sdkフォルダの外に退避して解決


ビルド時に出たIOExceptionエラー

IOException: Win32 IO returned ERROR_BROKEN_PIPE

JDKが32bitだった。

x86とかx64とかわからないよ…

x64が64bit。

 

JDKを64bit版に更新。

UnityのPreferencesーExternalTools-AndroidJDKパスを更新

 

ビルド時のなんか被ってますよエラー

Unable to convert classes into dex format

jarとかaarファイルの競合。

同じ名前のファイルとは限らない。
今回だと以下のどれかっぽい?
com.google.android.gms.play-services-base-15.0.1.aar
com.google.android.gms.play-services-basement-15.0.1.aar

libGoogleAnalyticsServices.jar

 

→~play-services-basementか、libGoogleAnalyticsServicesを消したらビルド通る。

が、正常動作するかはこれから検証必要。

 

2018/06/09追記

com.google.android.gms.play-services-basementを消すとビルドはできるが、端末で起動できないことがわかった。

消すならlibGoogleAnalyticsServicesだが、やはり旧GoogleAnalyticsとの共存は無理か…

追記終わり

 

感想

Unity × Googleプラグイン周りいじると毎回寿命がストレスでマッハなんだが…

被ってますよエラーに関しては、何でどのファイルが被ってるか教えてくれないんですかねえ…

 新旧Googleサービス夢の共演はえぐい

UnityのGLSLでテクスチャを扱いたかった話

動作済サンプルは多いほうがいいのでメモ。

UnityのGLSLでテクスチャを扱いたかったので調べた話。

例として読み込んだ画像全体をセピア調にしてみる。

 

環境

Unity2017.3.0f3
Windows 10 Home

 

まずサンプルコード

 

Shader "Custom/GLSL Shader/sepia" {
    SubShader {
        Pass {
            GLSLPROGRAM

            uniform sampler2D _MainTex; 

            #ifdef VERTEX
            // varying だとエラー
            out vec4 textureCoordinates;
                    
            void main()
            {
                textureCoordinates = gl_MultiTexCoord0; // テクスチャユニット0に設定された座標?
                gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
            }

            #endif

            #ifdef FRAGMENT
            // セピア用定数
            #define R_LUMINANCE 0.298912
            #define G_LUMINANCE 0.586611
            #define B_LUMINANCE 0.114478
            
            // varying だとエラー
            in vec4 textureCoordinates;

            void main() {
            
                vec4 color = texture2D(_MainTex, vec2(textureCoordinates)); // テクスチャから色取得?
            
                // セピア用の何かしらの計算
                float v = color.x * R_LUMINANCE + color.y * G_LUMINANCE + color.z * B_LUMINANCE;
                color.x = v * 0.9;
                color.y = v * 0.7;
                color.z = v * 0.4;
            
                gl_FragColor = vec4(color); // 計算した色を適用
            }
            #endif

            ENDGLSL
        }
    }
}

くっそ情けないコード恥ずかしくないのかよ?

コメントに疑問符があるが、まだまだ勉強中だし多少はね?

仕事でこんなコメント残しておくと怒られるからやめようね!

 

vscodeからのコピペでそのまま色つくのいいなあ。

 

 試してみる

上記シェーダーからマテリアル作成して、Sprite Rendererにぶっこむと、

 

これが(例:ボッチ宮古島旅で撮ったどっかのビーチ)

f:id:kitti_gutti:20180430183401j:plain

 

こうなる

f:id:kitti_gutti:20180430183404j:plain

できてるね。

 

色フィルターみたいのだったら現状でも色々できそう。

 

セピアのシェーダは以下を参考にさせていただきました!

ics.media

試行中に出たエラー

最初はエラー出た↓

warning C7555: 'varying' is deprecated, use 'in/out' instead

ので、

stackoverflow.comこ↑こ↓ を参考に

varying宣言部分のVERTEXをout、FRAGMENTをinに変更して対応。

 

2018/05/01追記

参考

siguma-sig.hatenablog.com