Skip to content

DecalProjector Component ​

箱の範囲内の表面へ色・法線・質感・発光を投影します。傷や汚れに使います。

設定する手順 ​

  1. Decal用Materialを選び、投影箱が受け取り先の表面に交わるよう配置します。
  2. SceneViewまたはGameViewで結果を確認します。
  3. 編集中のSceneまたはPrefabを保存します。

項目の説明 ​

項目C#名型操作定義時の初期値意味
マテリアルmaterialMaterial?読取・変更{}描画に使うMaterial参照です。既定MaterialはEngine側から解決されます。
有効enabledbool読取・変更trueこのComponentの処理を有効にします。GameObject全体のアクティブ状態とは別です。
大きさと奥行きsizeVector3読取・変更{1.0f, 1.0f, 0.1f}形状の幅・高さ・奥行きです。TransformのScaleも掛かります。
中心のオフセットpivotVector3読取・変更{}形状の原点または投影中心をずらします。
乗算色colorColor4読取・変更Color4::White()色を指定します。RGBAではAlphaも持ちます。
不透明度fadeFactorfloat読取・変更1.0fDecalの不透明度倍率です。0で透明、1で元の不透明度です。
UVスケールuvScaleVector2読取・変更{1.0f, 1.0f}UVへ掛ける拡縮倍率です。
UVオフセットuvBiasVector2読取・変更{}UVへ加える移動量です。
UV回転uvRotationfloat読取・変更0.0fUVの回転角です。APIの値はラジアンです。
重なり順sortOrderint読取・変更0Decalの重なり順です。
描画距離drawDistancefloat読取・変更1000.0f描画する距離の上限です。
距離フェード開始fadeScalefloat読取・変更0.9f描画距離に対してフェードを始める比率です。
角度フェード開始startAngleFadefloat読取・変更60.0f受け取り面の角度によるフェード開始角です。単位は度です。
角度フェード終了endAngleFadefloat読取・変更85.0f角度フェードで完全に消える角度です。単位は度です。
renderingLayerMaskrenderingLayerMaskuint読取・変更1uこのRendererを表示するCameraのCullingMaskと照合するbit集合です。
receiverRenderingLayerMaskreceiverRenderingLayerMaskuint読取・変更kRenderingLayerMaskBitsDecalを受け付けるRendererの描画Layerを選びます。

Inspectorの設定と使い方 ​

「Editor / C#」は両方から変更できる設定、「Editorのみ」は公開C# APIのない編集操作です。「Editor表示のみ」は計算結果や統計などの確認欄です。「C#のみ」は、このInspectorに編集欄のない操作です。

設定・操作編集場所C#の入口意味・使い方
Material・個別MaterialEditor / C#material / MaterialInstanceデカール用Materialを使います。個別設定のベースカラー・法線・質感・発光Texture、適用フラグはMaterialInstanceのParameter上書きです。共有Material Assetの変更と区別します。
表示・受け取り先レイヤーEditor / C#renderingLayerMask / receiverRenderingLayerMask表示レイヤーはCameraへの選別、受け取り先は投影するRendererの選別です。受け手のreceiveDecalsも有効にします。
大きさと奥行き・中心オフセットEditor / C#size / pivot投影箱が受け取り面へ交差するよう配置します。奥行きを大きくしすぎると、手前の壁以外にも投影されやすくなります。向きはTransformで決めます。
乗算色・不透明度・UV・重なり順Editor / C#color / fadeFactor / uvScale / uvBias / uvRotation / sortOrderMaterialへさらに色とAlphaを掛けます。fadeFactorを時間で下げると消滅フェードに使えます。UVは貼り方、sortOrderは重なるデカールの並びです。
描画距離・距離フェード・角度フェードEditor / C#drawDistance / fadeScale / startAngleFade / endAngleFade遠距離や投影面の傾きに応じて目立たなくします。drawDistanceは表示距離、fadeScaleはその距離に対するフェード開始の割合、角度は開始から終了の間で薄くする範囲です。

初期値はEngineのComponent定義時の値で、C++表記を含みます。C#へ貼り付ける実行例ではありません。既存Sceneの保存値や既定Assetがある場合はそちらが優先されます。数値の編集範囲はInspectorで制限される場合があります。

C#から使う ​

操作型はDecalProjectorです。 GameObjectから取得する基本操作はGameObjectの操作を参照してください。以下には基本プロパティだけでなく、公開関数・追加の設定API・継承した共通操作も掲載します。

実用例:傷を一定時間残してAlphaで消す ​

傷のDecalProjectorと同じGameObjectへ追加します。Materialと投影範囲はEditorで設定します。

cs
using NEMEngine;

public sealed class DecalLifetime : MonoBehaviour {

    [SerializeField, Min(0.01f)] private float lifetime = 5.0f;
    [SerializeField, Min(0.01f)] private float fadeDuration = 1.0f;
    private DecalProjector? decal;
    private float elapsed;

    void Start() {
        // 投影設定を持つDecalProjectorを保持
        decal = GetComponent<DecalProjector>();
    }

    void Update() {
        // 寿命の終わりだけAlphaを下げる
        if (decal == null) return;
        elapsed += Time.deltaTime;
        float fade = MathF.Max(0.01f, MathF.Min(fadeDuration, lifetime));
        float progress = (elapsed - (lifetime - fade)) / fade;
        decal.fadeFactor = Mathf.Clamp(1.0f - progress, 0.0f, 1.0f);

        // 透明になった後に投影用のGameObjectを破棄
        if (elapsed >= lifetime) NEMEngine.Object.Destroy(gameObject);
    }
}

設定用・関連するC#型 ​

DecalProjector ​

宣言・詳説種類・操作役割
public static DecalProjector FromEntity(GameObject gameObject)関数既にComponentを持つGameObjectから操作用の参照を作ります。Componentを追加する操作ではありません。
public MaterialInstance MaterialInstanceプロパティ(読取専用)このRendererだけに適用するMaterial Parameterです。共有Materialの変更とは区別します。
public Color4 colorプロパティ(読取・変更)色を指定します。RGBAではAlphaも持ちます。
public static int componentTypeIDプロパティ(読取専用)組み込みComponentの接続識別子です。通常のゲームコードではGetComponentで取得します。
public float drawDistanceプロパティ(読取・変更)描画する距離の上限です。
public bool enabledプロパティ(読取・変更)このComponentの処理を有効にします。GameObject全体のアクティブ状態とは別です。
public float endAngleFadeプロパティ(読取・変更)角度フェードで完全に消える角度です。単位は度です。
public float fadeFactorプロパティ(読取・変更)Decalの不透明度倍率です。0で透明、1で元の不透明度です。
public float fadeScaleプロパティ(読取・変更)描画距離に対してフェードを始める比率です。
public Material? materialプロパティ(読取・変更)描画に使うMaterial参照です。既定MaterialはEngine側から解決されます。
public Vector3 pivotプロパティ(読取・変更)形状の原点または投影中心をずらします。
public uint receiverRenderingLayerMaskプロパティ(読取・変更)Decalを受け付けるRendererの描画Layerを選びます。
public uint renderingLayerMaskプロパティ(読取・変更)このRendererを表示するCameraのCullingMaskと照合するbit集合です。
public Vector3 sizeプロパティ(読取・変更)形状の幅・高さ・奥行きです。TransformのScaleも掛かります。
public int sortOrderプロパティ(読取・変更)Decalの重なり順です。
public float startAngleFadeプロパティ(読取・変更)受け取り面の角度によるフェード開始角です。単位は度です。
public Vector2 uvBiasプロパティ(読取・変更)UVへ加える移動量です。
public float uvRotationプロパティ(読取・変更)UVの回転角です。APIの値はラジアンです。
public Vector2 uvScaleプロパティ(読取・変更)UVへ掛ける拡縮倍率です。

継承する共通操作:Component ​

宣言・詳説種類・操作役割
public T AddComponent<T>() where T : Component関数ComponentまたはScriptを追加し、操作する参照を返します。
public T? GetComponent<T>() where T : class関数component access(owner GameObjectへの委譲)
public T? GetComponentInChildren<T>(bool includeInactive = false) where T : class関数子階層から指定型のComponentを探します。
public T? GetComponentInParent<T>(bool includeInactive = false) where T : class関数親階層から指定型のComponentを探します。
public T[] GetComponents<T>() where T : class関数同じGameObjectにある指定型のComponentをすべて取得します。
public void GetComponents<T>(List<T> results) where T : class関数同じGameObjectにある指定型のComponentをすべて取得します。
public T[] GetComponentsInChildren<T>(bool includeInactive = false) where T : class関数子階層にある指定型のComponentを収集します。
public void GetComponentsInChildren<T>(bool includeInactive, List<T> results) where T : class関数子階層にある指定型のComponentを収集します。
public void GetComponentsInChildren<T>(List<T> results) where T : class関数子階層にある指定型のComponentを収集します。
public T[] GetComponentsInParent<T>(bool includeInactive = false) where T : class関数親階層にある指定型のComponentを収集します。
public void GetComponentsInParent<T>(bool includeInactive, List<T> results) where T : class関数親階層にある指定型のComponentを収集します。
public override int GetHashCode()関数同じ値を検索Keyに使うためのHashを返します。
public bool HasComponent<T>() where T : class関数指定型のComponentを持つかを調べます。
public void RemoveComponent<T>() where T : Component関数指定型のComponentを取り除きます。
public bool TryGetComponent<T>(out T component) where T : class関数Componentを検索し、見つかったかをbool、結果をout引数で返します。
public GameObject gameObjectプロパティ(読取専用)このComponentを所有するGameObjectです。
public Transform transformプロパティ(読取専用)所有GameObjectのTransformです。

継承する共通操作:Object ​

宣言・詳説種類・操作役割
public static void Destroy(Object? target)関数参照先の個体だけを安全地点で破棄する
public override bool Equals(object? obj)関数2つの値が等しいかを調べます。
public override int GetHashCode()関数同じ値を検索Keyに使うためのHashを返します。
public static GameObject Instantiate(Prefab original)関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static GameObject Instantiate(Prefab original, GameObject? parent)関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static GameObject Instantiate(Prefab original, Vector3 position, Quaternion rotation)関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static GameObject Instantiate(Prefab original, Vector3 position, Quaternion rotation, GameObject? parent)関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static T Instantiate<T>(T original) where T : Object関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static T Instantiate<T>(T original, GameObject? parent) where T : Object関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static T Instantiate<T>(T original, Vector3 position, Quaternion rotation) where T : Object関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static T Instantiate<T>(T original, Vector3 position, Quaternion rotation, GameObject? parent) where T : Object関数Prefabまたは指定したGameObject・Componentを複製して参照を返します。生成できない場合は例外です。nullを返す前提で処理しないでください。
public static bool operator ==(Object? lhs, Object? rhs)関数等値比較を行います。引数型と戻り値型で、成分ごとの演算か対象参照の比較かを確認してください。
public static implicit operator bool(Object? value)関数暗黙の型変換を行います。引数型と戻り値型で、成分ごとの演算か対象参照の比較かを確認してください。
public static bool operator !=(Object? lhs, Object? rhs)関数不等値比較を行います。引数型と戻り値型で、成分ごとの演算か対象参照の比較かを確認してください。

使用時の注意 ​

受け取り側RendererのReceiveDecalsと受け取り先レイヤーを確認します。透明物への投影とは区別してください。

Play中の変更は実行用Worldへ反映します。Scene編集のUndoと実行中の値の変更は別です。保存方法は編集と実行時変更を参照してください。

関連項目 ​

現行版マニュアル · 8ea58ba2 · 2026-10-28確認