2012年12月13日木曜日

必見!Unityメモリ管理について知るべき9つのこと


Unityのメモリ管理については、知っているつもりで知らない、ということがかなり多い。

筆者自身、このことについては疎いが、Unity Answersの常連が集まってUnityの知識をUnity Gemsというサイトに集約させようとい動きをしている熱心な方がいて、様々な記事を乗せている中にメモリ管理についても触れているため、そのUnity Gemsと呼ばれるサイトの管理者に事前に許諾を得たうえで、今回内容の翻訳を紹介をしたい。

なお、記事内容も多岐に渡っているため、かなりの回数に渡るブログ投稿となる点は事前に了解いただきたい。


-------

http://unitygems.com/memorymanagement/

October 21, 2012

ゲーム実行中にコンピュータあるいはデバイスのメモリ上で何が起きているのか、疑問に思ったことがある人は、この記事により、ゲームを上手に作成したりクラスや関数のメモリ使用を最適化するための技術的情報が得られると確信している。

  1. メモリのゾーン
  2. 値型とスタック
  3. 参照型とヒープ
  4. 構造体とクラスの比較
  5. 参照を作成する
  6. Staticクラス
  7. Static変数
  8. Static関数
  9. ヒープのフラグメンテーション、オブジェクトプール、およびガーベージコレクション
このチュートリアルは、UnityのためにC#に移行する、C/C++プログラマにピッタリである。C#は見た目とかなり違ってメモリを扱い、紛らわしかったり魔法のようだったりと最初は見えて、他のシステム同様に実際に落とし穴やクセがある。

Unityプログラミング、あるいは一般にプロミングを始めたばかりの場合、変数の型の目的を見誤ることがある。例えば、なぜいくつかの変数が更新された、なぜ残りは更新されなかったか、なぜまだ必要だったのに変数がなくなったのか、といった場合である。

初心者にありがちな問題はStatic変数の使用である。インターネットの様々なチュートリアルでで出会うけれども、作者の方がはっきりと書く手間を惜しんで結局「変数に簡単に参照する方法」にとどまりがちである。

問題は、Static変数(さらにはクラス変数)は簡単なトピックでないことである。

教える人によっては、単に使用するのを避けなさい、とだけ言って、Staticで出来ることは他の型でも出来ると教えてたりする。これから見ていくことはそれは仮に出来ないことはなくともベストの解決策ではないということである。

これから内容に深入りする前に、もしC言語の経験があってオブジェクト指向プログラミングの経験がないのであれば、メモリ管理について知っていることやstorageキーワードはオブジェクト指向プログラミングと似ても似つかないことを知るべきである。C#言語をC言語になぞらえることは避けるべきである。

このチュートリアルでは、異なるメモリのゾーン、値の種類、参照の種類、動的メモリ割り当てとStatic変数についてカバーする。
--------

次回より9つの記事を各々分けて紹介していく、ので長丁場ですがお付き合いください!

0 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿

ブログ アーカイブ