TouchScriptのFlickの判定

touchscript_flick_span
遅い端末だとTouchScriptでフリックが判定されなかった。
座標の取得をUpdate()で行なっているっぽいので、フレームレートが落ちると一定期間内の座標の取得が減ってしまうし、なんか取得された座標の移動量も0となっていてFlickとして判定されなかった。Flick Gestureの設定でFlick Timeを0.3にして判定時間を長くした。
Flick Timeは収集するタッチ座標の最大限の時間なので(ゆっくりのフリックも許容するよって意味)、これを伸ばしても特にフリックがもたつくとかではないです。

TouchScript利用時にボタンが2回呼ばれる(iOS)

TouchScriptの現最新版(version 9.0)を使って、iOSに転送するとボタンが2回呼ばれることがある。
TouchScriptのレイヤーはFullscreen Layerを使ってる。
ログを見ると

UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress
TouchScript.Core.TouchManagerInstance:updateReleased

と2回呼ばれている。UnityEditorでは発生しない。

Fullscreen Layerの代わりに、Standard Layerを使ってみたけど、今度はEventSystemにTouchScriptInputModuleというコンポーネントが設定され、指定のレイヤー以外のボタンが反応しなくなる。というかなんか挙動がおかしい… こっちはUnityEditorも含め。

Animator利用時のGameObjectのactiveのon/off

animator_switch_active

何度か遊んでいるとキャラクターの顔が崩れてくるなーと思ったので調べてたら、Animatorを使うコードの中でGameObjectのactiveをon/offをしていた。テレシュールブログさんのこの記事で、やってはいけないと知っていたけど、gameObjectのactiveのon/offなんて当たり前のようにやってしまうので注意。
今回は画面外に飛ばしつつRigidbodyのisKinematicをoffにして対応し。

Text Mesh Proの複数のスタイル

Text Mesh Proのスタイルは作ったFont Assetごとに反映されるっぽい。
一部だけアウトラインをつけたいとなると、おそらくFont Assetを別途つくらないといけない(はず)。
TextMesh Proの項目のでできることはその箇所ごとで変えられるけど、その下の ***** SDF Materialの設定(Face, Outline, Underlay…)などはスタイル(マテリアル)としてまとまる。その代わり、draw callが1度で描かれる。
UnityEngine.UIにある、Outlineなどは反映されない。

参考)Digital Native Studios > Underlay Applied to All Text Mesh Pro Instances

Xcode書き出し時のDefaultHDRIによるエラー

なぜか急にXcodeプロジェクトの書き出しでエラーが出るようになった。

An asset is marAn asset is marked with HideFlags.DontSave but is included in the build: Asset: ‘Library/unity editor resources’ Asset name: DefaultHDRIked with HideFlags.DontSave but is included in the build: Asset: ‘Library/unity editor resources’ Asset name: DefaultHDRI

Continue…

Textで文字を1文字ずつ表示

1文字(指定文字数)ずつ指定時間の間隔で表示させるText。
Textでもいいけど、TMP_Textで。
禁則処理や配置でガタガタしないようにしてる。
(alpha=1にして見えづらくしてるだけ…)
UniRx使用。
Continue…

CanvasのWorldSpaceのタップの位置

WorldSpaceに設定されたCanvasを作るとき、それをメインカメラとは別の専用のカメラで映す際にボタンが反応せずハマった。
このCanvasの他に、WorldSpace以外の設定でのCanvasがあると、タップの位置がずれてしまった。そちらのCanvasと位置を合わせたらうまく動いた。
そもそもどのカメラの基準でタップされた位置が判定されるとかの設定があるのかな…?

Canvasコンポーネント内にあるEventCameraってのがタッチしたスクリーン座標をどのカメラの座標系で計算するかという指定なので、ここにUIを映しているカメラを設定すればいいだけだった。。。
ちなみにスクリプト上で行うのは Canvas.worldCamera を使って設定可能。

VRモードでのカメラの切り替え

VRモードでのカメラの切り替えは、SetParentとかで親オブジェクトを変えるより、以前のカメラを破棄(or disable)にして、あらたなオブジェクトにCameraをAddComponent()した方が扱いやすい気がする。