読者です 読者をやめる 読者になる 読者になる

エディトリアルデザイナーのアプリ制作日記

Unityで遊ぶ個人開発者のメモ書き

縦書きノベル制作日記、4回目

 前回決めた基本方針どおり、ScrollRectを使ったモノを目指してゴリゴリ進めていきます。まずは、なにも考えずにどば〜〜〜〜っとテキストを表示。

f:id:hamazakifactory:20151009211231j:plain

 クリッピングもなにもしなくても、少々のテキストなら表示しっぱなしでも一応動くなぁと、調子に乗って行数を表示していくと・・・・。

f:id:hamazakifactory:20151009211648j:plain

 表示限界を超えちゃった♪ まぁ、表示限界を超える前に処理落ちもひどく、小細工せず無制限に表示することは無理と判明しました(当たり前だ)。

 そこで、見えない物は描画しないという、ごくごく基本的な小細工を加えてみました。要は、覗き窓から外れたオブジェクトを非表示(enable=false)にするというもの。結論から言うと、多少応答性は上がりましたが、それでも十分な速度ではありません。そもそも、表示限界を超える問題の解決にはなっていませんし。

f:id:hamazakifactory:20151003193654j:plain

 そこで、覗き窓から外に出た文字オブジェクトそのものをいったん消去(Destory)し、覗き窓に入ってきたら文字オブジェクトを再生成してやる方法にチェンジしてみました。

 今回、縦組を実現するためにLineObjectPrefabを親にして、表示したい文字を入れたテキストboxを子にして並べていくようにしています。この親に覗き窓にいるかどうかの状態を判別させて、テキストboxの生成・消去を行えば、描画&同時制御するオブジェクト数を極端に変動させず、処理的に安定しそう。ということで、さっそく組み替えてみると・・・・劇的に処理が向上しました。超軽快ってほどではありませんが、スマホでも動いているレベルなので、なんとか先へ進めそう。

 ちなみにスクロールビューのお勉強は、下記のサイトを参考にしました。 

petlust.hateblo.jp

 いろいろ見たけど、ここが一番分かりやすかったです。