2017-07

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ロード時間が長くなる現象が解決

キチンと廃棄処理を入れたらロード時間が長くなる問題は解決しました。100回くらい【タイトル】→【ワールドマップ】→【メインゲーム】→【タイトル】…を繰り返しましたが、時間は変わらなくなりました。たぶん大丈夫でしょうwww
開放処理に関して少しつまずきました。
このゲームはエフェクト(ダメージエフェクトとかそういう絵的な意味)やプレイヤーなどは全てCharaクラスというのを継承しています。継承先ではUpdateやDrawをoverrideしており、CharaManagerは現在有効なCharaの配列を持ち、それぞれに対してUpdateやDrawを呼んでいます。当然開放処理もCharaManagerがCharaに対して行います。CharaクラスはIDisposableインターフェースを実装し、継承先でも同様にIDisposableを実装しているので、理想としては継承先のDisposeがbase.Dispose()を実行することで順次開放できれば良いのですが…。CharaManagerはCharaとしてしか管理していないので、継承先のDisposeを呼ぶ術がありません。
結局CharaクラスにRelease()を用意して、Updateと同様に継承先でoverrideし、CharaManagerからはRelease()を呼ぶような形で決着つけました。もちろん、Releaseではbase.ReleaseとDisposeを呼んでいます。
もしかしたらもっとスマートな方法があるのかもしれませんが、問題は解決したのでこれでいいや。

● COMMENT FORM ●

.Netは動的型変換ができるので、Charaとして管理しているオブジェクトからIDisposalbeへ型変換できますよ。
Chara caraObj;
IDisposable dispose = charaObj as IDisposable;
ってかんじです。

おぉ、asですね! そういうキーワードが確かにありましたね~。勉強になります。早速試してみたいと思います。ありがとうございます!

GC対策でIDisposableを使ってるんですよね?
私はまだパフォーマンスを考えて設計してなったので、参照にnullポを入れて、フレームワークに破棄させてます(^^ゞ
今のところPCのみでの開発なので影響が無いのは分っているのですが、実機では動かす予定がないので、そのまま…という感じですね。
(それよりも、以前ファミレスでKaru_gamoさんのゲームを動かした時のように、シェーダーがサポートされていない方が問題ですねw)

C++にて趣味で作る時は、delete(もしくはfree)で、確実に不要なクラス、メモリブロックは破棄する癖が付いているのですが…

360とPCだと随分その辺の体感速度が違いますよ~。記事では6秒程度と書きましたが、PCだと一瞬ですwww
たぶんPCならうちのゲームは全部メモリ乗せても余裕でしょうね…。

おひさーヽ(´ー`)ノげんきー?

レベルなんとかの某人は、
「ロー●●ャ●●シーのロード時間の長さは演出です」
なんてことを言ってたそうな。
ユーザーなめんなって思った。

最近、御社のある駅まで仕事でよく行くんだよ。
今後もチョイチョイ行くと思うよ。タイミングが合ったら飯でも食おーぜーヽ(´ー`)ノ

こんばんわ~やぶそばん。
僻地までご苦労様ですwww
よかったら声かけてくださ~い。
最近はそんなに仕事詰まっていないので、
やぶそばんの方で問題なければ大丈夫ですよ!


管理者にだけ表示を許可する

トラックバック

http://karuduck.blog50.fc2.com/tb.php/167-09008032
この記事にトラックバックする(FC2ブログユーザー)

NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

プロフィール

Karu_gamo

Author:Karu_gamo
<メールアドレス>
karu_gamo#hotmail.co.jp
#を@に置き換えてえてください。

<自分リンク>
かるがも研究所【新】
YouTubeチャンネル
公開素材置き場
仕様書
旧ブログ(見るとこないです)
管理者ページ

リンク

YouTube動画

FC2カウンター

カテゴリー

Twitter

 

月別アーカイブ

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。