スポンサーサイト

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

NGUIでスプライトの色を変える

すっかり、どうすればいいのか忘れてて詰まってしまっていたので二度と忘れないようにメモしておく。NGUIのスプライトでカラーのアニメーションなどをプログラムやアニメーションで直接mColorをいじろうとする場合に例えばmColor.aを普通に書き換えても反応はありません。

それはNGUIの内部ではバーテックスリストを生成していてそれをコールするのですけれど基本的には一度生成したものに関してはそのまま使います。で、カラーの情報に関してはマテリアルじゃないんで、頂点に埋め込まれているものになっています。じゃあ、色の変更は出来ないのかといわれるともちろん、そんな訳ないです。そういうコンポーネントありますしね。

さて、プログラムでmColor等を直接書き換える場合にはUISlicedSprite等の中にあるMarkAsChangedを呼んであげましょう。

基本、これだけ。

コレだけのために随分無駄な時間をすごしました。
スポンサーサイト

ちょっとだけ役に立つ高速化テクニックその①

「やく」を変換すると「ヤク」が最初に出てきました。かなりヤクいです。こんにちは。

さて、非常に局所的にしか役に立たないUnityの高速化テクニック。

SkinnedMeshRendererのパラメータにクオリティというのがあります。これは通常Autoになっていてプロジェクトセッティングのクオリティの項目を参照するというものです。最高設定になっていればボーンのウェイトは4つまで持つ形になります。ですが、基本的にそんなに持つことはあんまりありません。ほとんど無駄遣いといってもいいでしょう。それでも速いハードでは一気にやってしまうことによるメリットはあるので正直4固定でも問題は無いです。ですが、そもそも使用しているボーンがひとつか二つしかない場合には無駄です。なのでサクッと設定してしまいましょう。

SkinnedMeshRendererのbones.Lengthを見て2以下であれば無駄遣いなので2か1にしてしまいましょう。プレハブ全部を見てコンポーネント調べて書き換えるようなコマンドを作ると便利です。

あんまり高速化には役に立たないですけれどね。

デバッグコマンド

10年目以降に、KろとKろが交わる地点で特定のボタンを押しながらAボタンを押すとフラグが開放とかそういうのです。

さて、現在Unityを使ってプログラムを作成しています。表示自体はアセットを使っているのである程度までの解像度の変化には耐えられるつくりになっています。さて、プログラムを作るうえで特定の状況を作り出すのに面倒な場合にボタンひとつでその状況が作れるようにするデバッグコマンドというものを必ず実装することになると思います。最近やってたコンシューマー機では大体のハードで使いもしないキーボードが使用できるのでそれをいいことにそれをデバッグコマンド機能として使っていました。さて、今触っているハードはハードというよりもデバイス。キーも無く画面しかありません。なので仕方なくスクリーンにGUIのButtonでデバッグボタンとして使っています。

基本的に問題なく使えるのですが、ひとつだけ問題が。その下にあるUIまで干渉するという点。UIとして使っているものが全部レイキャストでの判定なのでボタンの下にコライダーをくっつけようかとも思いましたが、正直計算全部が面倒なので却下。最終的にはNGUIを使っているのでCameraのクラスの中でUICameraを探してきてイベントレシーバーを書き換えるで落ち着いた。

プロフィール

masanotooru

Author:masanotooru
雪国で働くプログラマでしたが、会社を辞めて関西にいます。
プログラムの話もしますが漫画が好きなので漫画の話をします。
バイクを買ったので、そっちの話も増えました。
最近はUnityばかりなのでそっちメイン。

Google Adsense
検索フォーム
カテゴリ
最新コメント
メールフォーム

名前:
メール:
件名:
本文:

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