[Unity] Androidでも画面バラバラエフェクトを使える速度にしたい

Pocket

前回作ってみた「[Unity] FF10エンカウントエフェクトを再現する [画面バラバラ]」は手持ちのMemopad7(Android)で実行すると、10×10に分割した画面で1秒近く処理が止まります。さすがに使い物にならないので、動的生成をやめて速度が出るかどうかを試してみました。

 

 

 

環境

Unity 5.0.0

 

参考サイト

その1 Inspectorが変わる!

Editor スクリプティング 入門

Asset Storeに出すためのEditor開発入門

知って得するUnity エディタ拡張編

「宴」実装時に得られたUnityプログラムノウハウ

 

改善目標

Memopad7(ME176) Android機で負荷なく動くようにすること。

 

エディタ拡張でエフェクト用GameObjectを作成する

なんとなくエディタ拡張で作れたらかっこいいなと感じたので、GameObjectを作成するメニューに独自のメニューを追加して対応。参考サイトを元に作成しました。
このエディタ拡張に関するものを読み漁るのが一番大変でした。
結局、別にエディタ拡張でなくても良かったのですがこれがやりたかったんだ。

 

欠片情報を保持するShatteredコンポーネント

最初の実装は、メニューが選ばれた時点でMeshを作成し、MeshFilterなどすべて設定したGameObjectを作成していました。ただこれを行うとPrefab化したときMesh情報が無くなってしまいます。3角形をMesh化してAssetsフォルダに保存するのも嫌なので、Meshは動的に作ることに。そのため頂点位置をシリアライズ対象として持つようにしました。

実行時に形状を作成する為、シーンウィンドウ上で何も見えないのがすごい不満。これもエディタ拡張の機能で出来るのかな・・・。

こんなコード載せなくても良いと思いますが・・・。

 

Startメソッド内で生成

Startメソッド内となっていますが、キャプチャー終了時に頂点情報からMeshを作成するようにしました。

 

画面キャプチャー

Unity 5からRenderTextureがフリー版でも使用可能に!見た目は変わりませんが対応しておきましょう。

 

サンプル実行

Unity 5にしたら右下にDevelopment Buildと表示されるようになった。リリース用の出力があるのだろうけど、とりあえずこのまま。

3Dモデル : Animated Knight and Slime Monster

 

実行速度

前回記事の完全動的生成よりはもちろん高速になりました。欠片の厚みを無くし、欠片1つで8ポリゴンだったものを1ポリゴンに。(欠片を回転させるならカリングOFFで描画すればいいかな)

ただ多少のモタツキは完全になくなりませんでした。0.1秒程度止まる感じ。

 

まとめ

形状は静的に作成するので同じ形になりますが、10 x 10くらいに分割すれば問題ないでしょう。ただCanvasのUI込みで画面キャプチャーってどうやるんだろうか。UGUIが比較的新しい為か、情報が見つからない。

Pocket

希木小鳥

Diablo1でハクスラの世界に。今はPath of Exileをプレイ中。長くやっていてもNoob属性は常に付いている。そのくらい行き当たりばったり。オタクになれないゲーマー。

You may also like...