Unityでソシャゲを作りたい#06 touchじゃなくてもタッチが受け取れるらしいぞ
この先を作っていく段階で、ここまでを実機でテストしたら色んな障害が発生していたので修繕しました。
アニメーションしないからと言って愚直な手動制御はあまり良くない。
画面のスワイプ機能をうまく動作させるため、タッチイベントを受け取って指が離れたら画面を内包するスクロールの位置をスクリプトから制御させていたのですが、
値をいれても一瞬で移動するだけで見栄えが悪いのでwhileループとasyncで無理やりアニメーションさせていました。
PC上では普通に動いて見えますが、実機ではカックカク…
そこで調べてみたところ、こういう問題はtweenという概念で解決するらしく、Dotweenなるアセットを追加しました。
using DG.Tweening;
/////////////////////////////////
public async void move(int panel){
if(Moving){return;}
Moving=true;
nowpanel=panel;
float pos = poslist[panel];
ScrollRect scrollRect = GetComponent<ScrollRect>();
scrollRect.DOHorizontalNormalizedPos(pos, 0.2f , false);
Moving=false;
}
元のスクリプトは前の記事を見てもらうとして、こんな感じで書けます。
便利だなぁ。
他にもテキストなんかにも同じようにアニメーション的なものをつけれるので他の箇所も気づき次第改修していきます。
こんな感じで以前よりはるかに綺麗で軽いです。実機でもカクつかないので最高ですね。
タッチイベントはclickで受け取れる時代らしい
僕の知識上は実機はMouseButtonDownとか受け取れないからタッチイベントで書くんだよーって感じだと思ってたんですが、僕のgalaxys10 5gではクリックイベントが動作してました。
タッチも変わらず拾えていたので、本番はタッチだけで公開するのがいいように感じますが、時代の進歩なのか、galaxyはなんか独自の接続とかPCに対して友好的な感じがするのでその一端なのか不明ですが、とにかくそういうことらしいです。
サーバサイドのちょっとした躓き
紹介したか忘れましたが、クエストとかのデータはサーバから情報をいただいて描画しています。
サーバと接続する際、テスト用に仮想マシンでやっていたのですが、実機テストに際して外部からアクセスしたところ接続できず。
原因はシンプルで、NATだったから でした。
NATってのは外とつなぐときルーターとかを挟んでそいつだけ外から見たIPはそいつのIPだけにして、ルーターに繋いでる内部の機器はまた別のIPを割り振るよみたいなことで、
今回の場合、仮想マシンがNAT設定だったため開発してるPCと同列のネットが外側になって仮想マシンは内側なので開発PCと同列のスマホからは仮想マシンにアクセスできなかったということでした。
仮想マシンのNAT設定だって事さえわかればググってなんとかなると思います。
以上多少躓きましたが実機検証もできたので、ぼちぼち進めていきます。
UI作成が近づいてきて嫌だね。ハム太郎。
この記事が気に入ったらサポートをしてみませんか?