忍者ブログ
  • 2024.03
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.05
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/04/20 08:20 】 |
Unityで関数を渡す
引用
http://kan-kikuchi.hatenablog.com/entry/Delegate



public delegate void Delegate();
public void Method(Delegate delegateMethod){
/*処理*/

delegateMethod();
}





delegateの短縮系


//引数がstring
Action action1;
//引数がstringとint
Action<string, int> action2;

//返り値がint
Func func1;
//引数がstring、返り値がint
Func<string, int> func2;




ラムダ式の記述

(arg1, arg2) => { ... }






PR
【2018/01/27 19:28 】 | UNITY | 有り難いご意見(0)
Unity描画負荷
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でも行けるのでは
【2016/09/27 11:52 】 | UNITY | 有り難いご意見(0)
uGUIのZソート方法
Transformクラスのメソッド
SetSiblingIndex(int)
GetSiblingIndex(int)
を使う。
数値が大きいほど手前に表示される
【2016/07/17 21:00 】 | UNITY | 有り難いご意見(0)
Awakeの呼ばれるタイミング
Awakeは、そのオブジェクトが生成された時に呼び出される

コード中からInstantiateされた時などは、その場で呼び出される

シーン上に初めから配置されていた場合は、起動直後に呼び出される

…とは限らない!
【activeでない】場合は、シーン上にあっても呼び出されない。
初めてactiveになった時に呼び出される。


だから、Awakeの中に書いたことは必ず起動時に呼び出されると思っていてはいけない
【2016/07/17 18:02 】 | UNITY | 有り難いご意見(0)
表示物をタップできないようにする
主にuGUIの話。

インスペクタ上から、RaycastTargetをオフにすれば良い

そうすればタップ系のイベントは発生しない。
後ろの表示物がタップできるようになる
【2016/07/17 17:45 】 | UNITY | 有り難いご意見(0)
UnityInitApplicationNoGraphics()でエラー
UnityAppController.mの
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
の中の

UnityInitApplicationNoGraphics()
でエラー。

検索したがあまり情報出てこず。Unity4.x時代にはよくあったエラーのよう

結果、時間が経ったらなぜか治った(何もしてないのに)
【2016/06/12 11:19 】 | UNITY | 有り難いご意見(0)
uGUI vs NGUI
uGUI NGUI

uGUI
簡易処理

NGUI
細かいことまで設定できる
・テキストのカーニング


フォーラムのスレッド
抜粋

uGUI 3Dゲームの表示、HUDに向いている
NGUI 複雑な2Dゲームに向いている



今はuGUIでほぼ網羅できるから、標準でないNGUIを使う理由は特になし
【2016/05/27 15:24 】 | UNITY | 有り難いご意見(0)
NGUI使ってみた
参考ページ

----引用
Unityは画像ファイルを読み込むと、ドローコールというものが発生します。
単純に5枚の画像を読み込めば、ドローコール5です。
ですが、これを1枚にまとめて、表示する範囲をしていして表示すれば、ドローコールは1枚の画像を読んだだけなので、ドローコール1です。
この画像をまとめる機能が導入メリットの一つ。

もう一つが、インターフェイスに必要な基本的な機能が、コンポーネントに存在している。
ボタンのマウスオーバー、マウスアウト、プレスといったことや、
スクロールバーなどが簡単に導入できます。

----引用ここまで






ScalingType
flexible
Constraint
(要確認)

UIPanel
レイヤーのこと。ここを挟むと、同じアトラスでも別のドローコールになる(cocos2dのspriteBatchNodeのようだ)


基本使い方分かりやすいページ



【2016/05/26 15:47 】 | UNITY | 有り難いご意見(0)
画像周り
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ブロックの代表職を選んで記録するため、
グラデーションする実写は得意だが、
色がくっきり変わるアニメは苦手(にじむ)
【2016/05/20 12:16 】 | UNITY | 有り難いご意見(0)
Unityで2dゲームを作成
画面サイズは以下のように設定。

MainCameraでOrthogontal
サイズを5.68にする。


これは、640x1136の想定。
サイズは568じゃないのかと思うところだが、



と、ここで設定している。
Unityの1メートルが100ピクセルになる寸法。


これ、1にしたほうがいいんじゃないかという気がする
表示位置の計算をするときに、毎回100分の1にするとか面倒だ
【2015/12/11 22:24 】 | UNITY | 有り難いご意見(0)
| ホーム | 次ページ>>