表示テーマ
MeshRenderer Component
読み込んだモデルを描画します。SubMeshごとにMaterialやUVを設定できます。
設定する手順
- Mesh Assetを設定し、Materialと表示レイヤーを確認します。
- SceneViewまたはGameViewで結果を確認します。
- 編集中のSceneまたはPrefabを保存します。
項目の説明
| 項目 | C#名 | 型 | 操作 | 定義時の初期値 | 意味 |
|---|---|---|---|---|---|
| RenderingLayerMask | RenderingLayerMask | uint | 読取・変更 | 1u | このRendererを表示するCameraのCullingMaskと照合するbit集合です。 |
| メッシュ | Mesh | Mesh? | 読取・変更 | {} | 描画するMesh Assetです。 |
| 既定マテリアル | Material | Material? | 読取・変更 | {} | 描画に使うMaterial参照です。既定MaterialはEngine側から解決されます。 |
| レイヤー | Layer | int | 読取・変更 | 0 | 描画するLayer番号です。 |
| 描画順 | Order | int | 読取・変更 | 0 | 同じLayer内の並び順です。 |
| 表示 | Visible | bool | 読取・変更 | true | 通常描画に表示するかを指定します。 |
| BlendMode | BlendMode | BlendMode | 読取・変更 | BlendMode::Normal | 背景への色の混ぜ方です。加算などの方式を選びます。 |
| Queue | Queue | RenderPhase | 読取・変更 | RenderPhase::Opaque | 同じ描画区分内の並び順です。 |
| Zプリパス | EnableZPrepass | bool | 読取・変更 | true | 深度の先行描画を使います。 |
| RenderFlags | RenderFlags | MeshRenderFlags | 読取・変更 | MeshRenderFlags::Default | 照明・影・IBL・反射などを受けるかのbit設定です。 |
| デカールを受ける | receiveDecals | bool | 読取・変更 | true | Decalの投影を受け付けます。 |
Inspectorの設定と使い方
「Editor / C#」は両方から変更できる設定、「Editorのみ」は公開C# APIのない編集操作です。「Editor表示のみ」は計算結果や統計などの確認欄です。「C#のみ」は、このInspectorに編集欄のない操作です。
| 設定・操作 | 編集場所 | C#の入口 | 意味・使い方 |
|---|---|---|---|
| 表示レイヤーと描画順 | Editor / C# | RenderingLayerMask / Layer / Order | RenderingLayerMaskはCameraのCullingMaskと照合する表示先のbitです。LayerとOrderは描画の並び順で、衝突タイプとは別です。 |
| Material・個別パラメータ | Editor / C# | Material / MaterialInstance | Materialは共有Asset、MaterialInstanceはこのRendererの上書きです。色・Texture・発光などの公開Parameterを個別に変え、ほかの物体のMaterial設定を変えずに点滅や色違いを作れます。 |
| ブレンドモード・キュー | Editor / C# | BlendMode / Queue | 透明度をどう合成するかと、どの描画段階へ送るかを指定します。Alphaを下げるだけで透過描画になるとは限らないため、Materialの表面方式と合わせます。 |
| Mesh・Material・SubMesh | Editor / C# | Mesh / GetSubMeshes / SetSubMesh / GetMaterialInstance | モデルを指定し、SubMesh単位で表示・Material・表面方式・Alpha閾値を調整します。C#ではGetSubMeshesで設定を取得し、変更した要素をSetSubMesh(index, settings)で戻します。Materialの個別値はGetMaterialInstance(index)で変更します。 |
| SubMeshのローカルSRT・UV | Editor / C# | GetSubMeshes / SetSubMesh | モデル内の部位だけを移動・回転・拡縮したり、その部位のUVをずらしたりします。GameObject全体のTransformとは別です。nameやstableIDは対象部位を確認する情報です。 |
| Zプリパス・デカール受け取り | Editor / C# | EnableZPrepass / receiveDecals / RenderFlags | Zプリパスは深度の事前描画、receiveDecalsは投影デカールの受け取りです。描画フラグはMaterialの描画方式と合わせます。 |
| SubMeshの同時編集 | Editorのみ | — | 複数部位のMaterialをまとめて編集する操作用のチェックです。実行データのboolプロパティではありません。C#では対象の各MaterialInstanceやSubMesh設定へ変更を適用します。 |
| マテリアルパラメータの再読み込み | Editorのみ | — | モデルから得たMaterial情報を編集内容へ取り込むための操作です。ゲーム中の色変更の関数ではありません。個別の上書きを戻したくない場合は、再読み込み前に設定を確認します。 |
| モデル判定・描画方式・行列 | Editor表示のみ | — | モデルから判定した表面方式、解決後の描画方式、World行列・UV行列を確認します。表示中の計算結果へ直接入力する操作ではありません。 |
初期値はEngineのComponent定義時の値で、C++表記を含みます。C#へ貼り付ける実行例ではありません。既存Sceneの保存値や既定Assetがある場合はそちらが優先されます。数値の編集範囲はInspectorで制限される場合があります。
C#から使う
操作型はMeshRendererです。 GameObjectから取得する基本操作はGameObjectの操作を参照してください。以下には基本プロパティだけでなく、公開関数・追加の設定API・継承した共通操作も掲載します。
実用例:ダメージ時に一時的に赤くする
MeshRendererのある物体へ追加します。ゲームの被弾処理からFlash()を呼びます。MaterialがBaseColorを使うことを確認します。
cs
using System.Collections;
using NEMEngine;
public sealed class DamageFlash : MonoBehaviour {
[SerializeField, Min(0.01f)] private float duration = 0.15f;
private MeshRenderer? renderer;
private bool flashing;
void Start() {
// 被弾処理から使うRendererを保持
renderer = GetComponent<MeshRenderer>();
}
public void Flash() {
// 進行中の点滅を重ねて元の色を失わないようにする
if (!flashing && renderer != null) StartCoroutine(FlashRoutine());
}
IEnumerator FlashRoutine() {
if (renderer == null) yield break;
flashing = true;
// 部位ごとの元の色を保持して赤くする
var colors = new Color4[renderer.GetSubMeshes().Count];
for (int i = 0; i < colors.Length; ++i) {
colors[i] = renderer.GetColor(i);
renderer.SetColor(i, new Color4(1.0f, 0.1f, 0.1f, 1.0f));
}
yield return new WaitForSeconds(duration);
// モデルやRendererが残っている範囲だけ元へ戻す
if (renderer != null) {
int count = Math.Min(colors.Length, renderer.GetSubMeshes().Count);
for (int i = 0; i < count; ++i) renderer.SetColor(i, colors[i]);
}
flashing = false;
}
}設定用・関連するC#型
選択値(Enum)
| 型・各値の詳説 | 使える値 |
|---|---|
| BlendMode | Add / Multiply / Normal / Screen / Subtract |
| MeshRenderFlags | CastReflection / CastShadow / Default / Lighting / None / ReceiveIBL / ReceiveReflection / ReceiveShadow |
| RenderPhase | EditorOverlay / Opaque / PostProcessUI / ScreenUI / Transparent |
MeshRenderer
| 宣言・詳説 | 種類・操作 | 役割 |
|---|---|---|
public BlendMode BlendMode | プロパティ(読取・変更) | 背景への色の混ぜ方です。加算などの方式を選びます。 |
public bool EnableZPrepass | プロパティ(読取・変更) | 深度の先行描画を使います。 |
public static MeshRenderer FromEntity(GameObject gameObject) | 関数 | 既にComponentを持つGameObjectから操作用の参照を作ります。Componentを追加する操作ではありません。 |
public Color4 GetColor() | 関数 | 現在のマテリアル color を取得する。先頭サブメッシュを代表値として返す。 |
public Color4 GetColor(int subMeshIndex) | 関数 | Rendererのベースカラーを取得します。 |
public MaterialInstance GetMaterialInstance(int subMeshIndex) | 関数 | 指定SubMeshの個別Material Parameterを取得します。 |
public IReadOnlyList<SubMeshSettings> GetSubMeshes() | 関数 | 全SubMeshの編集用設定を取得します。 |
public int Layer | プロパティ(読取・変更) | 描画するLayer番号です。 |
public Material? Material | プロパティ(読取・変更) | 描画に使うMaterial参照です。既定MaterialはEngine側から解決されます。 |
public MaterialInstance MaterialInstance | プロパティ(読取専用) | subMeshIndex -1は全サブメッシュへ同じ値を設定する |
public Mesh? Mesh | プロパティ(読取・変更) | 描画するMesh Assetです。 |
public int Order | プロパティ(読取・変更) | 同じLayer内の並び順です。 |
public RenderPhase Queue | プロパティ(読取・変更) | 同じ描画区分内の並び順です。 |
public MeshRenderFlags RenderFlags | プロパティ(読取・変更) | 照明・影・IBL・反射などを受けるかのbit設定です。 |
public uint RenderingLayerMask | プロパティ(読取・変更) | このRendererを表示するCameraのCullingMaskと照合するbit集合です。 |
public void SetColor(Color3 color) | 関数 | 色Parameterを設定します。 |
public void SetColor(Color4 color) | 関数 | 全サブメッシュのマテリアル color を上書きする。 |
public void SetColor(int subMeshIndex, Color3 color) | 関数 | 色Parameterを設定します。 |
public void SetColor(int subMeshIndex, Color4 color) | 関数 | 指定サブメッシュのマテリアル color を上書きする。 |
public void SetSubMesh(int index, SubMeshSettings settings) | 関数 | 変更したSubMesh設定をRendererへ反映します。 |
public bool Visible | プロパティ(読取・変更) | 通常描画に表示するかを指定します。 |
public static int componentTypeID | プロパティ(読取専用) | 組み込みComponentの接続識別子です。通常のゲームコードではGetComponentで取得します。 |
public bool receiveDecals | プロパティ(読取・変更) | Decalの投影を受け付けます。 |
継承する共通操作:Component
継承する共通操作:Object
使用時の注意
BaseColorが正しくてもNormalやMetallicで見た目が変わります。SubMeshの設定はGetSubMeshes/SetSubMeshで制御します。
Play中の変更は実行用Worldへ反映します。Scene編集のUndoと実行中の値の変更は別です。保存方法は編集と実行時変更を参照してください。