とてもまずいリーク

前々回の記事で作成した剣の軌跡エフェクト
おそらくこれが原因でとんでもないことになった。

Unity起動~

ちょっとお風呂いってこよう

ふー、あれ、Unityがぴくりとも動かない・・

Unityメモリ使用4GB()

数十分の間にとんでもないメモリリークしてやがった・・・

さて当然原因を探るわけですが
.SetDestroy(time);
という具合に、軌跡メッシュに削除時間を指定
Destroy(gameObject, time);
という具合に指定された時間で消滅する
ヒエラルキーからもちゃんと消えていくのがわかる。
が、やっぱりリークしている。

いろいろ調べてみたところ、どうやらマテリアルはgameObjectをDestroyしても残り続けるらしい。こいつはやばいので早速破棄・・
が、駄目っ・・!
さらに調べてみると、動的に生成されたメッシュもまずいらしいので、早速().Meshを破壊する処理を追加する・・
が、(ry

しかし、困り果ててソースを見ているとあることに気づいた。
obj.GetComponent().sharedMesh = obj.mesh;

そう、つまり消すべき対象はこいつだ
gameObject.GetComponent<MeshFilter>().sharedMesh

・・解決!
少し目を離したすきに数GB持っていく最悪なゲームから解放

最近Unityがやたらクラッシュしてイライラしていたのだけど、実は自分のせいだったっていうね。とにかく、今回学んだことをわずれずに進もう。



拍手3件と3件ありがとうございます!

テーマ : ゲーム
ジャンル : ゲーム

コメントの投稿

非公開コメント

プロフィール

ガビこ人形

Author:ガビこ人形
紅い東方地区へようこそ
暑い日は動きません

東方地区カウンター
現在東方地区カウンター
現在の閲覧者数:
最近の記事
カテゴリー
最近のコメント
ブロとも申請フォーム

この人とブロともになる

リンク
報告
20150405 新カテゴリ追加
月別アーカイブ