colors | 指定するピクセルカラーの配列 (1D 配列にするよう平らにされた 2D 画像) |
miplevel | 書き込みをするためのテクスチャのミップレベル |
ピクセルカラー配列を設定します
この関数は、色の配列を使って全体のピクセルの色を変更する
実際に変更アップロードする Apply を呼び出す
グラフィックカードのピクセルに
colors の平面 2 次元配列、ピクセルは、右から左にレイアウトする
下から上(行の後の行)。配列サイズは使用される MIP レベルの height できまり、最低限の width の量でなければなりません。
デフォルトのミップレベルは 0 (ベーステクスチャ)です。その場合、サイズはテクスチャのサイズにぴたりと一致します。
一般的にミップレベルのサイズは mipWidth=max(1, width>>miplevel)
そして高さも同様です。
この関数の機能は ARGB32、RGB32、Alpha8 のテクスチャ形式のみに対応しています。
その他の形式の場合、SetPixels は無視します。
テクスチャもインポート設定で読み取り可能フラグが設定されている必要があります。
setPixels を使用すると、特に大規模なテクスチャ、繰り返し同操作を呼び出すよりも高速になります。
さらに、個々の setPixels はミップマップレベルにアクセスすることができる。
See Also: GetPixels, SetPixels32, Apply, LoadRawTextureData, mipmapCount.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void Start() { Renderer rend = GetComponent<Renderer>();
// duplicate the original texture and assign to the material Texture2D texture = Instantiate(rend.material.mainTexture) as Texture2D; rend.material.mainTexture = texture;
// colors used to tint the first 3 mip levels Color[] colors = new Color[3]; colors[0] = Color.red; colors[1] = Color.green; colors[2] = Color.blue; int mipCount = Mathf.Min(3, texture.mipmapCount);
// tint each mip level for( int mip = 0; mip < mipCount; ++mip ) { Color[] cols = texture.GetPixels( mip ); for( int i = 0; i < cols.Length; ++i ) { cols[i] = Color.Lerp(cols[i], colors[mip], 0.33f); } texture.SetPixels( cols, mip ); } // actually apply all SetPixels, don't recalculate mip levels texture.Apply(false); } }
ピクセルカラー配列を設定します
この関数は、上記の SetPixels の拡張版です。 全体ミップレベルだけでなく y と x で始まる blockHeight と blockWidth を返します。 colors 配列は blockWidth*blockHeight のサイズでなければならず、 変更されたブロックは使用ミップレベルに適合しなければなりません。