この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-06-11 07:07:02

タイトル: C# のクラス一覧
SEOタイトル: Unity C# でよく使うクラス一覧完全リファレンス

この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。

<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;background:#fffbea;border:1px solid #f4c430;margin:1em 0;width:100%"><tr><td style="background:#f4c430;color:#000;font-weight:bold;padding:8px">この記事の要点</td></tr><tr><td style="padding:10px"><ul><li><strong>GameObject / Component / Transform</strong> がすべての土台</li><li>挙動を書く Script は <strong>MonoBehaviour</strong> を継承</li><li>位置回転は <strong>Vector3 / Quaternion</strong>、時間は <strong>Time</strong>、入力は <strong>Input</strong></li><li>物理は <strong>Rigidbody / Collider</strong>、レンダリングは <strong>Camera / Light / Renderer</strong></li><li>音は <strong>AudioSource</strong>、アニメは <strong>Animator</strong>、データ保持は <strong>ScriptableObject</strong></li></ul></td></tr></table>
<h2>Unity C# クラスのカテゴリ</h2>

<p>Unity でゲームを作る際によく使うクラスをカテゴリ別にまとめます。すべて <code>UnityEngine</code> 名前空間にあります。</p>

<h2>1. 基本クラス: GameObject / Component / Transform</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">// GameObject: シーン内のすべてのオブジェクトの基底
GameObject obj = new GameObject("MyObject");
GameObject prefab = Resources.Load<GameObject>("Prefabs/Enemy");
GameObject instance = Instantiate(prefab, position, Quaternion.identity);
Destroy(instance, 2f);   // 2 秒後に削除

// Component: GameObject にアタッチされるすべての機能
Rigidbody rb = obj.GetComponent<Rigidbody>();
Rigidbody added = obj.AddComponent<Rigidbody>();

// Transform: 位置・回転・スケール(GameObject に必ず 1 つ)
obj.transform.position = new Vector3(0, 10, 0);
obj.transform.SetParent(parentTransform);</code></pre>
<h2>2. MonoBehaviour(スクリプトの基底)</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">using UnityEngine;

public class PlayerController : MonoBehaviour
{
    void Awake() { /* インスタンス化直後(1 回) */ }
    void Start() { /* 最初のフレームの直前(1 回) */ }
    void Update() { /* 毎フレーム */ }
    void FixedUpdate() { /* 物理更新ごと(固定間隔) */ }
    void LateUpdate() { /* Update 後 */ }
    void OnEnable() { /* 有効化時 */ }
    void OnDisable() { /* 無効化時 */ }
    void OnDestroy() { /* 破棄時 */ }
    void OnCollisionEnter(Collision c) { /* 衝突開始 */ }
    void OnTriggerEnter(Collider c) { /* トリガー進入 */ }
}</code></pre>
<h2>3. 数学系: Vector / Quaternion / Mathf</h2>

<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;width:100%">
<thead><tr style="background:#e3f2fd"><th>クラス</th><th>用途</th><th>主要メンバ</th></tr></thead>
<tbody>
<tr><td>Vector2</td><td>2D ベクトル(UI / 2D ゲーム)</td><td>x, y, magnitude, normalized</td></tr>
<tr><td>Vector3</td><td>3D ベクトル(位置・方向)</td><td>x, y, z, forward, up, right</td></tr>
<tr><td>Vector4</td><td>4 次元(色 RGBA など)</td><td>x, y, z, w</td></tr>
<tr><td>Quaternion</td><td>回転(4 元数)</td><td>Euler, AngleAxis, LookRotation</td></tr>
<tr><td>Mathf</td><td>数学関数(float 版)</td><td>Sin, Cos, Lerp, Clamp, PI</td></tr>
<tr><td>Random</td><td>乱数</td><td>Range, value, insideUnitSphere</td></tr>
</tbody>
</table>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">Vector3 v = new Vector3(1, 2, 3);
float length = v.magnitude;
Vector3 dir = v.normalized;
float dot = Vector3.Dot(a, b);
Vector3 cross = Vector3.Cross(a, b);
Vector3 lerped = Vector3.Lerp(a, b, 0.5f);

Quaternion rot = Quaternion.Euler(0, 90, 0);
Quaternion look = Quaternion.LookRotation(target.position - transform.position);

float clamped = Mathf.Clamp(value, 0f, 1f);
float lerped2 = Mathf.Lerp(0, 100, t);
float pi = Mathf.PI;

float r = Random.Range(0f, 1f);
int n = Random.Range(0, 10);   // 0-9
Vector3 p = Random.insideUnitSphere * radius;</code></pre>
<h2>4. 時間と入力: Time / Input</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">// Time
float dt = Time.deltaTime;         // 前フレームからの経過秒
float fixedDt = Time.fixedDeltaTime;
float time = Time.time;            // 起動からの秒数
Time.timeScale = 0;                // ポーズ(0 で停止)
Time.timeScale = 0.5f;             // スローモーション

// Input(旧 Input System)
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
if (Input.GetKeyDown(KeyCode.Space)) { /* ジャンプ */ }
if (Input.GetMouseButton(0)) { /* 左クリック中 */ }
Vector3 mouse = Input.mousePosition;

// 新 Input System なら using UnityEngine.InputSystem;</code></pre>
<h2>5. 物理: Rigidbody / Collider</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">// Rigidbody: 重力・力・速度
Rigidbody rb = GetComponent<Rigidbody>();
rb.AddForce(Vector3.up * 500f);
rb.velocity = new Vector3(5, 0, 0);
rb.useGravity = false;
rb.isKinematic = true;             // 力の影響を受けない

// Collider: 衝突判定の形
// BoxCollider / SphereCollider / CapsuleCollider / MeshCollider
BoxCollider box = GetComponent<BoxCollider>();
box.size = new Vector3(1, 2, 1);
box.isTrigger = true;              // 通り抜け+イベントだけ

// Raycast
Ray ray = new Ray(transform.position, Vector3.forward);
if (Physics.Raycast(ray, out RaycastHit hit, 100f))
{
    Debug.Log($"Hit: {hit.collider.name}");
}

// 2D 用は Rigidbody2D / BoxCollider2D / Physics2D</code></pre>
<h2>6. レンダリング: Camera / Light / Renderer</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">// Camera
Camera cam = Camera.main;
cam.fieldOfView = 60;
cam.backgroundColor = Color.black;
Vector3 screenPos = cam.WorldToScreenPoint(transform.position);
Ray ray = cam.ScreenPointToRay(Input.mousePosition);

// Light
Light light = GetComponent<Light>();
light.color = Color.yellow;
light.intensity = 1.5f;
light.type = LightType.Directional;   // Directional / Point / Spot / Area

// Renderer(基底クラス、MeshRenderer / SpriteRenderer などが派生)
Renderer rend = GetComponent<Renderer>();
rend.material.color = Color.red;
rend.material.SetFloat("_Metallic", 0.5f);
rend.enabled = false;                  // 非表示</code></pre>
<h2>7. 音とアニメーション</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">// AudioSource
AudioSource audioSrc = GetComponent<AudioSource>();
audioSrc.clip = bgmClip;
audioSrc.loop = true;
audioSrc.Play();
audioSrc.PlayOneShot(seClip, 0.8f);    // 効果音

// AudioListener はカメラに 1 つ

// Animator(Mecanim)
Animator anim = GetComponent<Animator>();
anim.SetBool("isWalking", true);
anim.SetFloat("speed", 5f);
anim.SetTrigger("jump");
anim.Play("Attack");

// Animation(古い、レガシー)
Animation animLegacy = GetComponent<Animation>();
animLegacy.Play("Idle");</code></pre>
<h2>8. データ保持: ScriptableObject</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">// アセットとして保存できるデータコンテナ
[CreateAssetMenu(fileName = "WeaponData", menuName = "Data/Weapon")]
public class WeaponData : ScriptableObject
{
    public string weaponName;
    public int damage;
    public float attackSpeed;
    public AudioClip swingSound;
    public GameObject hitEffect;
}

// 使用側
public class Player : MonoBehaviour
{
    public WeaponData weapon;

    void Attack()
    {
        Debug.Log($"{weapon.weaponName} で攻撃: {weapon.damage} ダメージ");
    }
}</code></pre>
<h2>9. コルーチン(Coroutine)</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">void Start()
{
    StartCoroutine(SpawnLoop());
}

IEnumerator SpawnLoop()
{
    while (true)
    {
        Instantiate(enemyPrefab, RandomPos(), Quaternion.identity);
        yield return new WaitForSeconds(2f);   // 2 秒待つ
    }
}

IEnumerator FadeOut(SpriteRenderer sr)
{
    for (float t = 1f; t > 0; t -= Time.deltaTime)
    {
        sr.color = new Color(1, 1, 1, t);
        yield return null;       // 1 フレーム待つ
    }
}</code></pre>
<h2>10. UI と Texture / Material</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-csharp">// UI(using UnityEngine.UI;)
Button btn = GetComponent<Button>();
btn.onClick.AddListener(() => Debug.Log("Clicked"));

Text txt = GetComponent<Text>();           // 旧 UI
TMP_Text tmp = GetComponent<TMP_Text>();   // TextMeshPro (推奨)

Image img = GetComponent<Image>();
img.sprite = Resources.Load<Sprite>("icon");

// Texture / Material
Texture2D tex = Resources.Load<Texture2D>("grass");
Material mat = new Material(Shader.Find("Standard"));
mat.SetTexture("_MainTex", tex);

// Color
Color c = new Color(1f, 0.5f, 0f, 1f);   // RGBA (0-1)
Color c2 = Color.HSVToRGB(0.3f, 1f, 1f);</code></pre>
<h2>頻度別早見表</h2>

<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;width:100%">
<thead><tr style="background:#e3f2fd"><th>★</th><th>クラス</th></tr></thead>
<tbody>
<tr><td>★★★</td><td>GameObject, MonoBehaviour, Transform, Vector3, Time, Debug</td></tr>
<tr><td>★★★</td><td>Input, Rigidbody, Collider, Quaternion, Mathf</td></tr>
<tr><td>★★</td><td>Camera, Animator, AudioSource, Renderer, Material</td></tr>
<tr><td>★★</td><td>Coroutine, ScriptableObject, Color, Random, RaycastHit</td></tr>
<tr><td>★</td><td>Light, Texture, Sprite, Canvas, Button, Text, TMP_Text</td></tr>
<tr><td>★</td><td>NavMeshAgent, ParticleSystem, LineRenderer, Gizmos</td></tr>
</tbody>
</table>

<h2>FAQ</h2>

<p><strong>Q: GameObject.Find は遅い?</strong><br />
A: 重い。シーン内全 GameObject を走査する。Inspector で参照を設定するか、<code>FindObjectOfType</code> を Start で 1 回呼ぶのが望ましい。</p>

<p><strong>Q: MonoBehaviour を new できない</strong><br />
A: 不可。<code>AddComponent<T>()</code> か Prefab を <code>Instantiate</code> する。</p>

<p><strong>Q: ScriptableObject と class の違い</strong><br />
A: ScriptableObject は<strong>アセットとして保存できる</strong>。複数 Prefab で共有するデータ(武器ステータス、敵パラメータ等)に最適。</p>