Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- db
- interface상속
- Stack
- c++게임엔진
- 데이터베이스
- C/C++
- cocos2d
- 입출력
- java
- Thread
- 동기화블럭
- c++
- 예외처리
- 데이터타입
- 프로그래밍
- unity
- 반복문
- 상수변수
- Class함수
- cocos2dx
- singleton
- cocos2d-x
- 스레드
- 게임엔진
- Interface
- c#
- Exception
- 예외던지기
- 문자열
- oracle
Archives
- Today
- Total
초보 프로그램 개발자
[Unity] 오브젝트 재활용 본문
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 |