表示テーマ
変数・参照・保存の読み方
ラベルとC#名
Inspectorの日本語ラベルとC#の識別子は同じとは限りません。Componentページの「項目」と「C#名」を対応させてください。C#は大文字・小文字を区別します。
例として、InspectorのAnimationPlayerはC#ではAnimatorを取得します。CollisionのC#型はCollisionComponentで、接触コールバックの引数型Collisionとは別です。
主な型
| 型 | 意味 |
|---|---|
| bool | 有効・無効などの2択 |
| int / uint | 整数。uintには負の値を入れられない |
| float | 小数を持つ値。NaNや無限大を受け付けない設定もある |
| Vector2 / Vector3 / Vector4 | 2〜4成分。位置・速度・UVなど用途を確認する |
| Quaternion | 回転。Euler角の3成分とは異なる |
| Color3 / Color4 | RGB/RGBA。Alphaは通常0が透明、1が不透明 |
| Asset・AssetGUID | ファイル名ではなくGUIDで追跡するAsset参照 |
| GameObject・Component | 現在のWorldで生存する対象への操作用参照 |
| LayerMask | Layer番号の集合をbitで表す値 |
単位を確認する
同じfloatでも、秒・度・ラジアン・倍率・pixel・World距離では意味が違います。CameraのFovYは度、SpotLightのCosAngleは余弦値です。UVの0〜1は画像上の正規化座標で、pixel数とは異なります。
Layer番号が0でも、そのLayerを選ぶMaskは1u << 0、つまり1です。Maskの0は何も選ばない状態です。描画Layerと衝突タイプは別管理です。
編集値と実行値
| 操作 | 反映先・保持 |
|---|---|
| Edit中のInspector編集 | 編集用Scene。保存してファイルへ反映 |
| Play中のComponentやScriptの変更 | 実行用World。Stopで破棄 |
| Material Assetの編集 | 同じAssetを使用する対象に共通 |
| RendererのMaterialInstance | そのRendererまたはSubMeshだけに適用 |
| 設定Snapshotの値を変更 | Snapshot内だけ。SetSettingsなどで反映が必要 |
| C#のGraphicsSettings変更 | 実行中の設定。明示保存するユーザー設定と共有Project設定を区別 |
| グラフィック設定のクリアカラー変更 | Project共有設定へ保存。C#からの同値変更は実行中のみ |
参照の寿命
破棄したGameObjectやComponentは、C#側の変数が残っていても有効な対象ではありません。== nullなどの有効性判定を行い、Scene切替後の参照を使い回さないでください。
Asset参照とScene Instance内のGameObject参照も異なります。GameObjectを参照する設定は、対象が属するScene・Prefabと保存用IDを組み合わせて解決します。未解決の参照を、同じ名前の別物へ勝手につなぎ替える運用は避けます。
Snapshotの変更を反映する
csharp
// 設定のSnapshotを取得
var particle = GetComponent<ParticleSystem>();
if (particle == null) return;
var settings = particle.GetSettings();
// 編集した値を所有するComponentへ戻す
settings.emitter.maxParticles = 1000;
particle.SetSettings(settings);数値を変更するAPIと、共有Assetのファイルを保存するAPIは別です。コード例は特記がなければPlay中の変更を示します。