Unity シンプルなコーディングガイド
目次
1. コンポーネントの分割
- ポイント:
各スクリプトは1つの役割だけ担当する。 - 例:
プレイヤーの移動は専用スクリプトに分ける。
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 5f;
void Update()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
transform.Translate(new Vector3(h, 0, v) * speed * Time.deltaTime);
}
}
2. Updateの最適化
- ポイント:
毎フレーム不要な処理は避ける。条件が合うときだけ実行する。
using UnityEngine;
public class OptimizedUpdate : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("Space pressed!");
}
}
}
3. コルーチンの利用
- ポイント:
時間をかける処理は、コルーチンで分割実行する。
using UnityEngine;
using System.Collections;
public class CoroutineExample : MonoBehaviour
{
void Start()
{
StartCoroutine(FadeIn());
}
IEnumerator FadeIn()
{
for (float alpha = 0; alpha < 1; alpha += Time.deltaTime)
{
Debug.Log("Alpha: " + alpha);
yield return null;
}
}
}
4. イベントの利用
- ポイント:
イベントでスクリプト間の連携を行うと、依存が少なくなる。
using UnityEngine;
using System;
public class ItemCollector : MonoBehaviour
{
public static event Action OnCollected;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Item"))
{
OnCollected?.Invoke();
Destroy(other.gameObject);
}
}
}
5. オブジェクトプーリング
- ポイント:
生成と破棄のコストを下げるため、オブジェクトを再利用する。
using UnityEngine;
using System.Collections.Generic;
public class ObjectPool : MonoBehaviour
{
public GameObject prefab;
Queue<GameObject> pool = new Queue<GameObject>();
void Start()
{
for (int i = 0; i < 5; i++)
{
GameObject obj = Instantiate(prefab);
obj.SetActive(false);
pool.Enqueue(obj);
}
}
public GameObject GetObject()
{
if (pool.Count > 0)
{
GameObject obj = pool.Dequeue();
obj.SetActive(true);
return obj;
}
return Instantiate(prefab);
}
}
6. デバッグとテスト
- ポイント:
Debug.Logで状態確認。簡単なテストコードも作成できる。
using UnityEngine;
public class DebugExample : MonoBehaviour
{
void Start()
{
Debug.Log("Game Start");
}
}
7. シーン管理とアセット管理
- ポイント:
SceneManagerでシーン切替。Addressableで動的にアセットをロード可能。
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneChanger : MonoBehaviour
{
public void NextScene()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
}
8. バージョン管理とコメント
- ポイント:
Gitでコード変更を管理し、コード内にシンプルなコメントを書く。
// プレイヤー移動処理
// コミット例: "Add basic player movement"
まとめ
- 分割: 1スクリプト1役割
- 最適化: 不要処理は避ける
- 分割実行: コルーチンで時間をかける処理
- 連携: イベントで疎結合に
- 再利用: オブジェクトプーリングで生成負荷軽減
- 検証: Debug.Logやテストで動作確認
- 管理: シーン管理とバージョン管理を徹底
これらの基本を押さえると、初学者でもスムーズにUnity開発が始められます。
ディスカッション
コメント一覧
まだ、コメントがありません