【Unity】Firebase + Xcode13 で起動時にクラッシュする問題の対処法
2022/2/11 追記
2022年1月31日のVersion 8.8.0にて修正されました。 firebase.google.com
概要
UnityでFirebaseを入れている自分のプロジェクトをXcode13にアップグレード後、アプリをビルドすると起動時にクラッシュするようになってしまいました。
正確には該当アプリの初回起動後にプッシュ通知を許可、その後タスクキルして再度アプリを立ち上げると画面がブラックのままで進行不能になります。
どうやらFirebaseライブラリの問題であるらしいのですが、2022年1月11日現在まだ公式で修正されてはいない模様。
クラッシュの原因として、UnityFrameworkが読み込まれるよりも先にFirebase側のフレームワークが読み込まれてクラッシュしているみたいです。
InputFieldを押した時の入力受付状態になるタイミングをコードレスで変更する
概要
※新Input Systemの話ではありません。
今回はUnityのInputFieldにて、入力欄を押してから入力状態にするタイミングをプログラミング無しで変更する方法を解説します。
InputFieldの挙動について
まず、InputFieldの入力受付状態は「押した」瞬間になります。(コード的に言うと OnPointerDown()時)
普通は気になりませんが、これをリスト内の各セルに埋め込むとなるとスマホの場合困ったことになります。
具体例としてセーブスロットを挙げてみます。
この画面上でセーブスロット名を押すと名前を直接変えられるようにします。
……すると、スクロールした時にセーブ名の部分を押してしまうと入力受付状態となりスクロールできない問題が発生します。
スマホだと仮想キーボードが出現してしまうのでユーザー体験として非常に良くありません。
今回はコードをいじらずに「指を押して離した」瞬間になるように挙動を変更させる方法を紹介します。
【Fork】ブランチの切替時にサブモジュールも自動的に更新されるようにする
自分はGitクライアントでForkを愛用しています。
昔はSourcetreeを使ってましたが動作が重くなる問題が煩わしくなり、より高速なForkに移行しました。
サブモジュールを設定していると、ブランチを切り替えたときに差分が更新されないように初期設定でなっているため、ブランチを切り替えたらサブモジュールも合わせて変更してくれるように設定します。
変更は以下の通り:
ForkのPreferences -> General -> Update submodules automatically にチェックを入れる。
【MediaWiki】ダイナミック・ページ・リスト備忘録
概要
海外のWikiエンジンといえばMediaWiki だが、その機能の1つであるダイナミック・ページ・リストの利用例を備忘録的メモ。
使い方
利用には <DPL></DPL>
か {{#DPL:}}
の2つの実装方法がある。
どちらも基本的には同じようなことができるが、決定的に違うこととして <DPL></DPL>
は{{PAGENAME}}
等のテンプレートを表示フォーマットに埋め込むことができない。
{{#DPL: |category = Target:{{{1|{{#replace:{{BASEPAGENAME}}|&|and}}}}} |namespace = Sub |notcategory = Non Target Page |allowcachedresults=true |ordermethod=title |mode=userformat |format = ,{{ ²{#ifexist:²{#titleparts:%TITLE%|1|1}²|²{#titleparts:%TITLE%|1|1}²|²{#titleparts:%TITLE%|2|1}²}² ¦param= ²{#switch: %TITLE% ¦FugaFuga/Chapter1 = unique ¦#default = normal }² }} ,, |noresultsheader=There is no target. }}
上記は {{Target List}}
みたいな感じでテンプレート化しており、以下のことをしている:
Target:<Hogehoge>
という名前のSub名前空間に属するカテゴリが設定されているページを全て取得する(ただしNon Target Pageカテゴリがあるページは除く)- このテンプレートを呼び出す際に、第一引数を自由に設定できるようにしている
- 設定されてなければ表示したページの
{{BASEPAGENAME}}
を取得する {{BASEPAGENAME}}
は名前空間名と末尾の下位ページの階層を除外したページ名(Help:Title/Foo/Bar
ページではTitle/Foo
を返す)
- 設定されてなければ表示したページの
- このテンプレートを呼び出す際に、第一引数を自由に設定できるようにしている
&
は残念ながらうまくパースができない仕様なので、and
に変換しているallowcachedresults
をオンにすることで取得結果をキャッシュする- これをしないとページ読み込みを大幅に遅らせることがある
ordermethod
でページのタイトル順に並び替えmode
で表示フォーマットを自作タイプに指定format
で表示の仕方を設定- 「format=全リストの最初,各リストの最初,各リストの最後,全リストの最後」という形式
- 今回は各リストの最初だけほしかったのでそれ以外は無記述でパス
- ページの先頭と一致する名前のテンプレートを呼び出している
- 例)
Sub:Hogehoge/Chapter1
,Sub:FugaFuga/Chapter1
,Sub:Zero/One/Chapter1
- 名前空間を含まない記事名(
%TITLE%
)を#titleparts
でスラッシュで分割する。このとき、最初のスラッシュ部分が階層ではなく名前の一部である場合も考慮し、#ifexist
で名前と一致するか判定し、一致しない場合は分割しないようにしている- スラッシュ2つが名前の場合は考慮されていない
- ページ名と同じ名前のテンプレート内にはパラメータが指定できるようになっている
- 引数
param
には{{#switch}}
構文で一致するページ名のページで表示される場合、特殊な設定のテンプレートが適用されるようになっている
- 引数
- DPL内のテンプレート in テンプレートする場合
{{}}
は²{}²
に代替する - 同様に
|
も¦
に代替する
- 「format=全リストの最初,各リストの最初,各リストの最後,全リストの最後」という形式
- 検索結果0件のときは
noresultsheader
で「There is no target.」と表示するように指定
参考記事
ヘルプ:ダイナミック・ページ・リスト | コミュニティセントラル | Fandom Extension:DynamicPageList3 - MediaWiki