2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【ゲームエンジン】Unityなんでも質問スレpart12

243 :名前は開発中のものです。:2023/11/26(日) 11:00:07.84 ID:ap8K17/p.net
こうなる↓

public class GameManager : MonoBehaviour
{
 GameObject prefab;
 Hogehoge[] hogehoges;

 private void Start()
 {
  hogehoges = new Hogehoge[10];
  for (int i = 0; i < hogehoges.Length; i++)
  {
   GameObject obj = Instantiate(prefab); // プレハブから複製オブジェクトを生成・配置する
   hogehoges[i] = obj.GetComponent<Hogehoge>(); // 複製オブジェクトからHogehogeコンポーネントを取得して、配列hogehogesにぶち込む
   obj.localPosition = new Vector3(i, 0f, 0f); // 位置を変更
   obj.localPosition = Quaternion.identity; // 角度を変更
  }
 }

 private void Update()
 {
  for (int i = 0; i < hogehoges.Length; i++)
  {
   hogehoges[i].変数A = hogehoges[i].変数A + 1; // 【A】
  }
 }
}

こうすれば毎フレームのHogehogeのアクセスはクラス変数にキャッシュした値へのアクセスになるので、パフォーマンスは最適化されたことになる
GetComponentもそうだしInstantiateもそうだけど、UnityEngine傘下で定義された変数や関数は高コストという認識でおk
Hogehoge[] hogehoges; みたいに自分で作成したコンポーネントやクラスの傘下に定義された変数や関数なら低コスト

総レス数 1001
334 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200