Unity個人開発で“絶対にハマる落とし穴”ベスト3
> 現役エンジニアが語る「やらかし実体験」とその対策---
Unityでアプリやゲームの個人開発をしていると、「ちょっとした油断」でとんでもない落とし穴にハマることがあります。
今回は、私自身の実体験をもとに「絶対にハマる落とし穴ベスト3」とその回避法をご紹介します。
---
【第3位】Prefabの使い回しでScriptableObjectが破壊される
【落とし穴】
ScriptableObjectのインスタンスをPrefabに参照させたまま、実行中に変更を加えると全体に影響してしまう。
意図しない書き換えで、他のオブジェクトの挙動まで壊れることも。
【対策】
インスタンスを直接参照するのではなく、「Instantiate()」で複製してから使うようにしましょう。MyScriptableObject instance = Instantiate(originalSO);---
【第2位】タイマーやコルーチンが非アクティブ時に動かない
【落とし穴】
SetActive(false)にしたオブジェクトのUpdate()やCoroutineは実行されません。
画面遷移やUIの表示切り替えで「なぜかタイマーが止まる」現象が起きがちです。
【対策】
非表示にしたいだけなら、CanvasGroupのalphaとinteractable/blockRaycastsの切り替えで表示を制御しつつロジックは動かすのがベターです。
---
【第1位】不要なRaycastターゲットがパフォーマンスを落とす
【落とし穴】
UIにおけるImageやTextコンポーネントで、Raycast Targ
0