본문 바로가기
[ Unity ]/- 유니티 실습

유니티 오브젝트 스크롤링

by MRG 2024. 9. 13.
728x90
반응형

 

▣ 변수 설명
objectPrefab: 생성할 오브젝트의 프리팹을 Inspector에서 연결할 수 있는 변수입니다.

poolSize: 오브젝트 풀의 크기를 설정합니다. 한 번에 최대 몇 개의 오브젝트를 풀에 저장할지 결정합니다.

spawnXPosition: 오브젝트가 생성될 X 좌표를 설정하는 값입니다. 예를 들어 오른쪽에서 생성되도록 X 좌표를 설정할 수 있습니다.

minYPosition / maxYPosition: 오브젝트가 생성될 때 Y 좌표의 범위를 설정하는 값입니다. Y 좌표는 이 범위 내에서 랜덤 하게 결정됩니다.

leftBound: 오브젝트가 왼쪽으로 이동할 때 화면의 왼쪽 끝에 닿는 X 좌표입니다. 이 좌표를 넘어가면 오브젝트는 비활성화됩니다.

spawnInterval: 오브젝트가 생성되는 주기입니다. 이 값이 클수록 오브젝트가 생성되는 시간이 길어집니다.

moveSpeed: 오브젝트가 왼쪽으로 이동하는 속도입니다. 이 값이 클수록 오브젝트는 더 빨리 이동합니다.

timer: 오브젝트가 일정한 시간 간격으로 생성되도록 시간을 체크하는 변수입니다.

objectPool: 오브젝트 풀을 관리하는 List<GameObject>로, 미리 생성한 오브젝트들이 여기에 저장됩니다.

▣ 주요 함수 설명


Start()
게임이 시작될 때 호출됩니다.
오브젝트 풀을 초기화하고, poolSize만큼의 오브젝트를 미리 생성하여 비활성화된 상태로 오브젝트 풀에 저장합니다.


Update()
매 프레임마다 호출됩니다.
spawnInterval 주기마다 오브젝트를 풀에서 가져와 활성화하고, 활성화된 오브젝트가 화면의 왼쪽 끝에 도달하면 다시 비활성화하여 풀에 반환합니다.


SpawnObjectFromPool()
오브젝트 풀에서 비활성화된 오브젝트를 찾아서 다시 사용합니다.
오브젝트가 활성화될 때 Y 좌표는 minYPosition과 maxYPosition 사이의 랜덤 한 값으로 설정됩니다.
오브젝트가 활성화되면 오른쪽에서 출발하여 왼쪽으로 이동을 시작합니다.

 

ManageActiveObjects()
활성화된 오브젝트들을 순회하면서 각 오브젝트를 왼쪽으로 이동시킵니다.
Translate(Vector3.left * moveSpeed * Time.deltaTime)를 사용하여 일정 속도로 오브젝트를 왼쪽으로 이동시킵니다.
오브젝트가 leftBound 값보다 왼쪽으로 이동하면, 그 오브젝트를 비활성화하고 다시 풀에 반환합니다.

 

DeactivateObject(GameObject obj)
오브젝트가 화면의 왼쪽 끝에 도달했을 때, 해당 오브젝트를 비활성화하고 다시 오브젝트 풀에 반환합니다.
핵심 로직
오브젝트 풀링(Object Pooling): 오브젝트를 계속해서 생성하고 파괴하는 대신, 미리 오브젝트를 생성하고 필요할 때마다 재사용하여 성능을 최적화하는 기법입니다.

오브젝트 이동: 생성된 오브젝트는 Translate 메서드를 사용하여 일정한 속도로 왼쪽으로 이동합니다. 이는 매 프레임마다 호출되는 Update 함수 내에서 처리됩니다.

오브젝트 비활성화: 오브젝트가 화면의 왼쪽 끝에 도달하면 SetActive(false)로 오브젝트를 비활성화하고, 다시 풀에서 사용할 수 있도록 관리합니다.

728x90
반응형

'[ Unity ] > - 유니티 실습' 카테고리의 다른 글

유니티 Single RayCast, Multi RayCast  (1) 2024.09.14
유니티 Animator, Animation, Blend Tree  (1) 2024.09.14
유니티 2D Collider  (0) 2024.09.13
유니티 2D 배경 스크롤링  (1) 2024.09.12
유니티 코루틴  (3) 2024.09.12

댓글