リポジトリのお引越し作業
BItbucketを使っていたが社内の諸事情によりGithubに移行する時などに役立つメモ
方法1:Importerを使う方法
GithubのImporterページから行う方法がある
こちらのページから移行元のURLと新しいリポジトリ名を記入するとすんなりリポジトリの移行を行うことが出来る。
ただしGitLFSを含んだリポジトリだとエラーが起きることがあったので以下の方法も紹介する。
方法2:コマンドで行う方法
- GitLFSを含まない場合は以下の方法だけで良い
git clone --mirror https://example.jp/old.git cd old.git git push --mirror https://example.jp/new.git
- GitLFSを含む場合は以下の手順が必要になる
# まずは普通にmirrorでclone git clone --mirror https://example.jp/old.git cd old.git # LFSのファイルを全て取得 git lfs fetch --all # mirrorでpush git push --mirror https://example.jp/new.git # LFSのファイルを全てアップデート git lfs push --all https://example.jp/new.git
参考サイト:
シーン切り替えを行うとRPCが呼ばれなくなる事案の解決法
シーン切り替えを挟むと PhotonTarget.AllBufferd
な PRC
メソッドが後から入室してきたクライアントで呼ばれないことがある。
そのような場合は
シーン切り替え直前に以下を呼び
PhotonNetwork.isMessageQueueRunning = false;
シーンが切り替わりルームに入室が完了した時に
PhotonNetwork.isMessageQueueRunning = true;
こちらを実行すると解決する。
複数のMacで同じDistribution属性のProvisioningファイルを使いたい時
UnityでWebViewを実装してみた
実装環境
Unity5.6
UnityでWebViewを実装する
UnityでWebViewを実装するとなるとiOSとAndroidのネイティブプラグインを作成しなければならないのだが、正直言ってネイティブプラグインを作るのはかなりの労力を要するので避けたいところ。
ネットで良さげなアセットを探していたところGreeさんから良い感じのソースがGithubに上がっていたのでこれを利用させてもらうことにした。
使い方は非常に簡単でサンプルプロジェクトの SampleWebView.cs
の中身をマルっとコピペするだけでUnityでWebViewを実装することができた。
ハマったポイント
iOSはすんなり実装が済んだのだが、AndroidではなぜかWebViewが表示がされない。調べてみるとOnce you built an apk
という記述が Readme.md
に書かれてあった。試しに1度Androidをビルドするとbuildに失敗したのだが新しく AndroidManifest.xml
が自動生成されているではないか!?いつもJenkinsビルドでビルドを通しているのでこれは盲点だった。なので AndroidでWebViewを使うときは1度ローカルでビルドしましょう
というのが今回の注意点でした。
AssetBundleがなぜかうまくロードされない時
AssetBundleがうまくロードされない時はAssetBundle化するファイルのmetaファイルを見てみましょう。
例えば se_tap.mp3
というファイルのmetadataは
fileFormatVersion: 2 guid: 5786e95a631374cccbdec528f4558f2d timeCreated: 1486886144 licenseType: Free AudioImporter: serializedVersion: 6 defaultSettings: loadType: 0 sampleRateSetting: 0 sampleRateOverride: 44100 compressionFormat: 1 quality: 1 conversionMode: 0 platformSettingOverrides: {} forceToMono: 1 normalize: 1 preloadAudioData: 1 loadInBackground: 1 3D: 1 userData: assetBundleName: se_tap assetBundleVariant:
のようになっています。
上記は正常なファイルなのですが、時々 assetBundleName
の行が
assetBundleName: "\bse_tap"
といった感じでアセットバンドル名がおかしくなっていることがあります。
原因はファイルのリネームなど様々な問題が考えられるのですが
解決する手順としては
1.ロードが失敗するファイルを削除
2.Remove Unused Names でアセットバンドル名のキャッシュを消去
3.もう一度ファイルを追加し直しAssetBundle化
上記の手順行うと良いと思います。
UnityにFirebase入れたらJenkinsビルドが失敗を繰り返すようになった
発端
UnityにFirebaseを導入したは良いのだけどJenkinsビルドが通らなくなった。
以下エラーの記述を一部抜き出したもの
Undefined symbols for architecture armv7: "_OBJC_CLASS_$_FIRGoogleAuthProvider", referenced from: objc-class-ref in libAuth.a(credential_ios_de0c3e1fa34e9a30835a63e195323a0f.o) "_OBJC_CLASS_$_FIRGitHubAuthProvider", referenced from: objc-class-ref in libAuth.a(credential_ios_de0c3e1fa34e9a30835a63e195323a0f.o) "_OBJC_CLASS_$_FIREmailPasswordAuthProvider", referenced from: objc-class-ref in libAuth.a(credential_ios_de0c3e1fa34e9a30835a63e195323a0f.o) "_OBJC_CLASS_$_FIRFacebookAuthProvider", referenced from: objc-class-ref in libAuth.a(credential_ios_de0c3e1fa34e9a30835a63e195323a0f.o) "_OBJC_CLASS_$_FIRApp", referenced from: objc-class-ref in libApp.a(app_ios_3c1f2f5540e3edfbae8c7bf918ae5900.o) "_OBJC_CLASS_$_FIRAuth", referenced from: objc-class-ref in libAuth.a(auth_ios_7d6b9e9ddb5f240ff95f510fddebba51.o) "_OBJC_CLASS_$_FIRTwitterAuthProvider", referenced from: objc-class-ref in libAuth.a(credential_ios_de0c3e1fa34e9a30835a63e195323a0f.o) ** BUILD FAILED **
どうやら原因はFirebaseのライブラリを参照できないことらしい・・・。
ローカルのビルドは通るのに何かおかしいと思いローカルビルドとJenkinsビルドの生成物の違いを見てみると Podfile
が生成されていないことがわかった。
この Podfile
がないとFirebaseのAuthやAnalyticsのライブラリがインストールされないのである。
これは困った。。。毎回ローカルビルドでは非常に効率が悪い.
原因
そもそもこのPodファイルはFirebaseをUnityに取り込んだ時に追加される Google.IOSResolver
というファイルが Podfile
の生成を担っているのだがどうもこの Google.IOSResolver
がJenkinsビルドではうまく動作していないらしいということがわかった。
もう少し深く原因を探ってみると Google.IOSResolver
を呼び出すのは FirebaseAuthDeps
などのスクリプトなのだが
#elif UNITY_IOS UnityEngine.Debug.Log("FirebaseDeps"); Type iosResolver = Google.VersionHandler.FindClass( "Google.IOSResolver", "Google.IOSResolver"); if (iosResolver == null) { return; } Google.VersionHandler.InvokeStaticMethod(iosResolver, "AddPod", new object[] { "Firebase/Auth" }, new Dictionary<string, object>() { { "version", "3.10+" }, { "minTargetSdk", "7.0" } }); #endif
このように iOS
ビルドの時のみ呼び出されるものだった。
一応Jenkinsビルドが行われる時はUnity上のスクリプトから Switch Platform
をしているのだが恐らく Switch Platform
の前にPodfile生成のメソッドが呼ばれているようである。
解決
どうにかこうにか原因を探っているうちにJenkinsのジョブ設定のUnityの項目であらかじめ -buildTarget
を設定していなかったことがわかった。
//以前 -quit -batchmode -executeMethod "コマンドから呼び出すメソッド名" //修正後(-targetBuild追加) -quit -batchmode -buildTarget ios -executeMethod "コマンドから呼び出すメソッド名"
コマンドラインの部分を上記のように修正したらうまくいきました。
この問題で約5日間くらいJenkinsビルドに悩まされていたので解決して本当に良かった(;.:◉;.:◞౪◟;.◉;)
追記[Firebase 3.0.1]
FirebaseSDKのバージョンを3.0.1に上げたら再びビルドが通らなくなった、今回もiOSResolverがうまく動作してないことが原因のようだったのでプロジェクト内の Google.IOSResolver
の Select Platform For Platform
の項目を見てみると Editor
にのみチェックが入っていた。これを iOS
にもチェックを追加することできちんとCocoaPodが動作し、必要なライブラリが追加されるようになった。もし同じような問題でJenkinsビルドが通らなくなった人がいたら参考にしてほしい。
【Unity】テキストをアニメーションさせる有用アセット
テキスト1文字1文字をアニメーションさせたい時ってありますよね。 そんな時にオススメのアセットを紹介。
1.TextFx (30💲)
実際に使ってみたけど、非常に簡単にテキストのアニメーションが実装できる。
ただし少し処理が重い。。。
そして Unity5.5
にアップデートした瞬間に使えなくなったorz
早くアップデートしてくれー!!
2.Typeface Animator(5💲)
5💲でとってもリーズナブル!
実際に使ってみたけどTextFxよりかは若干利便性に欠けるが、機能としては十分なものを備えている。
何より安いしUnity5.5でもなんなく動きました!
今までTextFxで実装していた部分を全て Typeface Animator
で置き換えることができたので一件落着!
以上でテキスト系のアニメーションのアセット紹介を終わります!