■ このスレッドは過去ログ倉庫に格納されています
【ゲームエンジン】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