× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
引用
http://kan-kikuchi.hatenablog.com/entry/Delegate
delegateの短縮系
ラムダ式の記述
PR |
http://unity3d.com/support/documentation/Manual/iphone-DrawCall-Batching.html
unityで負荷を減らすためにすべき3つのこと http://www.cratesmith.com/archives/183 ・Update()関数での処理を減らす ・強制的にGCする ・トライアングルは7500以下、drawcallは20以下 ・同じマテリアルを使い回す ・動かないモデルならstatic指定をする ・オーバードローや複雑なシェーダにも気を配れ ・profilerを使って調べるのがもっともよい方法 http://answers.unity3d.com/questions/14578/whats-the-best-way-to-reduce-draw-calls.html ・マテリアルもテクスチャも違うメッシュを1つにまとめることもできる テクスチャアトラス マテリアルは1つになってしまうけど、drawcallは1で済む http://www.google.co.jp/search?client=safari&rls=en&q=unity3d+drawcallを減らす&ie=UTF-8&oe=UTF-8&redir_esc=&ei=oiDFTrrZBe2amQXF_YyXCw#sclient=psy-ab&hl=ja&client=safari&rls=en&source=hp&q=unity3d+draw%E3%80%80call&pbx=1&oq=unity3d+draw%E3%80%80call&aq=f&aqi=&aql=&gs_sm=e&gs_upl=13610l13610l5l13826l1l1l0l0l0l0l192l192l0.1l1l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=75cd20b0589e05c6&biw=1250&bih=649 メッシュをコンバインするスクリプト http://unity3d.com/support/documentation/ScriptReference/Mesh.CombineMeshes.html メッシュ生成 http://answers.unity3d.com/questions/10249/combining-meshes-with-submeshes.html http://www.unifycommunity.com/wiki/index.php?title=MeshCreationHelper 最初に見つけた、material,meshをまとめる http://forum.unity3d.com/threads/88604-One-draw-call-for-each-shader-with-dynamic-meshes-The-Bob-script.?highlight=draw+call オブジェクトごとに必ずdrawcallが1回呼ばれるという証言(マテリアルの共有に関わらず) http://unity3d.qatohost.com/questions/16098/draw-call-reduction-for-a-stream-of-bullets.html particle system1つにつき1回draw callが呼ばれる 公式の説明文 http://unity3d.com/support/documentation/Manual/iphone-DrawCall-Batching.html CombineChildrenScriptというのがある batchというUNITYの自動処理があり、これによってdrawcallの回数を節約できる batchが効くのは、同じマテリアルを使用しているオブジェクト同士 textureだけが違うマテリアルを使っている場合は、アトラス化すれば同マテリアルにできる スクリプトからsharedMaterialにアクセスする場合、Renderer.sharedMaterialを使うこと。Renderer.materialを使うとコピーしてしまう dynamic batchingもできるが、頂点数300以内のmeshに対してのみ行われる。自動で行われる CombineChildrenスクリプトについても調べておく必要がある(調べたがちょっと出てこない) static batchingもある。マテリアル共有で、一切動かないmeshに対して指定できる。Inspectorの右上、staticチェックボックスを有効にする。ただし、メモリ消費が増えるので、やらないほうがいいときもある。。。これはiOS advancedでのみ使用可 パフォーマンス関連公式 http://unity3d.com/support/documentation/Manual/Optimizing%20Graphics%20Performance.html#iPhoneOptimizingGraphicsPerformance iPhone系のテク アルファテストはアルファブレンドに変える 頂点数は40000以下に。旧世代なら10000以下 モデル…過剰なフェイスを使わない,UVマップの数をできるだけ減らす。実際に処理する頂点数は、見えている数ではなく、モデルを形作るのに必要な数。法線やUVマップなんかを複数持っている頂点は分割される。 テクスチャ圧縮…iOSネイティブのPVRT圧縮フォーマットが使われる。 マテリアル…計算を減らす、小オブジェクトをバッチしてdraw call減らす、staticオブジェクトをバッチするなどを行う。テクスチャをまとめてマテリアルを同一にする その他チェックポイント Mobile/VertexLitが最速のシェーダ。 同一シーン内のマテリアルはできるだけ統一 動かないオブジェクトはstatic指定 PVRTCフォーマットにする、16bitにする テクスチャはまとめる シェーダの型、pow,sin,conの使用を減らす、 pixel lightはひとつだけ、ライトはベイクしたほうがいい アルファテストよりアルファブレンド フォグは不要なら使わない オクルージョンカリングを生かす http://unity3d.com/support/documentation/Manual/Modeling%20Optimized%20Characters.html インポートしたモデルには、スキンメッシュレンダラーが付く。これは1モデルに1つにすべし マテリアルは1つ。複数のマテリアルを使うというのは、複数のシェーダを使いたいときに限るべし 骨は少なく。30本くらいが最高 ポリゴン数は300−1500(三角形)くらい インポート時にIKはFKにベイクされる。だからノードは不要 MeshMerger http://www.unifycommunity.com/wiki/index.php?title=MeshMerger 3.5でも行けるのでは |
Transformクラスのメソッド
SetSiblingIndex(int) GetSiblingIndex(int) を使う。 数値が大きいほど手前に表示される |
Awakeは、そのオブジェクトが生成された時に呼び出される
コード中からInstantiateされた時などは、その場で呼び出される シーン上に初めから配置されていた場合は、起動直後に呼び出される …とは限らない! 【activeでない】場合は、シーン上にあっても呼び出されない。 初めてactiveになった時に呼び出される。 だから、Awakeの中に書いたことは必ず起動時に呼び出されると思っていてはいけない |
主にuGUIの話。
インスペクタ上から、RaycastTargetをオフにすれば良い そうすればタップ系のイベントは発生しない。 後ろの表示物がタップできるようになる |
UnityAppController.mの
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions の中の UnityInitApplicationNoGraphics() でエラー。 検索したがあまり情報出てこず。Unity4.x時代にはよくあったエラーのよう 結果、時間が経ったらなぜか治った(何もしてないのに) |
uGUI NGUI
uGUI 簡易処理 NGUI 細かいことまで設定できる ・テキストのカーニング フォーラムのスレッド 抜粋 uGUI 3Dゲームの表示、HUDに向いている NGUI 複雑な2Dゲームに向いている 今はuGUIでほぼ網羅できるから、標準でないNGUIを使う理由は特になし |
参考ページ
----引用 Unityは画像ファイルを読み込むと、ドローコールというものが発生します。 単純に5枚の画像を読み込めば、ドローコール5です。 ですが、これを1枚にまとめて、表示する範囲をしていして表示すれば、ドローコールは1枚の画像を読んだだけなので、ドローコール1です。 この画像をまとめる機能が導入メリットの一つ。 もう一つが、インターフェイスに必要な基本的な機能が、コンポーネントに存在している。 ボタンのマウスオーバー、マウスアウト、プレスといったことや、 スクロールバーなどが簡単に導入できます。 ----引用ここまで ScalingType flexible Constraint (要確認) UIPanel レイヤーのこと。ここを挟むと、同じアトラスでも別のドローコールになる(cocos2dのspriteBatchNodeのようだ) 基本使い方分かりやすいページ |
PVRTCについて参考
PVRTCって何? まず最初にPVRTCの基本情報をざっくり書いておきます。 正式名称: PowerVR Texture Compression 開発元: Imagination Technologies 圧縮モード: 4bppモード、2bppモード 圧縮方式: 非可逆圧縮(圧縮後の画像は劣化します) 特記事項: 画像サイズの縦横がそれぞれ2の累乗の画像のみに対応 圧縮モードにある「bpp」という単位は「bits per pixel」の略で、1ピクセルの色を表現するのに必要とするビット数を表しています。4bppというのは1ピクセルにつき4ビットの色情報を使っているということになります。ちなみに24ビットRGBカラーは24bpp、32ビットARGBカラーは32bppとなります。 4x4ブロックの代表職を選んで記録するため、 グラデーションする実写は得意だが、 色がくっきり変わるアニメは苦手(にじむ) |
画面サイズは以下のように設定。
MainCameraでOrthogontal サイズを5.68にする。 これは、640x1136の想定。 サイズは568じゃないのかと思うところだが、 と、ここで設定している。 Unityの1メートルが100ピクセルになる寸法。 これ、1にしたほうがいいんじゃないかという気がする 表示位置の計算をするときに、毎回100分の1にするとか面倒だ |