초보 프로그램 개발자

[Unity] 오브젝트 재활용 본문

Unity

[Unity] 오브젝트 재활용

Ji_HG 2023. 1. 10. 19:40

Bullet 스크립트 글에서 작성되어 있지만 따로 작성하기위해

제일 쉬운 예로 총알을 쏘면 총알은 맞추고 사라지거나 어느정도 거리이후에 없어지는게 당연하다.

그때 사라질때 마다 Destroy 함수로 오브젝트를 삭제해버리면 계속해서 쓰레기값이 가 생성된다.

쓰레기값을 줄이기위해 재활용하는 방법을 사용한다.

 

public class BulletMng : SingleTon<BulletMng> {

	[SerializeField] GameObject BulletObject;
	[SerializeField] List<Bullet> BulletList;
    
    void CreateBullet(Vector2 pos, string name = "Bullet") {
		bool IsFind = false;
		// BulletList 안에서 비활성화된 벽을 찾았으면 재활용
		for(int i=0; i<WallList.Count; i++) {
			if (BulletList[i].gameObject.activeSelf == false && BulletList[i].name.Equals(name)) {
				IsFind = true;
                // Spawn 은 Bullet 스크립트
				BulletList[i].Spawn(pos);
				break;
			}
		}
		// 비활성화된 벽이 없거나 생성된 벽이 없을경우 새로 생성
		if (!IsFind) {
			Bullet bullet = Instantiate(BulletObject).GetComponent<Bullet>();
			BulletObject.transform.parent = transform;
			BulletObject.Spawn(pos);
			BulletObject.name = name;
			BulletList.Add(bullet);
			}
		}
    }

 

'Unity' 카테고리의 다른 글

[Unity] 선형보간 Lerp  (0) 2023.01.10
[Unity] 곡선 이동 (베지어곡선)  (0) 2023.01.10
[Unity] Bullet 스크립트 정리  (0) 2022.12.08
[Unity] 싱글톤 패턴  (0) 2022.12.08
[Unity] Collider2D 정리  (0) 2022.12.07