방명록
- 유니티 게임 개발 숙련 #12023년 09월 18일 21시 25분 55초에 업로드 된 글입니다.작성자: noun06
Scripatble Object
- 데이터를 저장하고 관리하기 위한 도구로, 프로젝트 내에서 게임 오브젝트와 독립적인 에셋으로 데이터를 저장하고, 에디터에서 데이터를 쉽게 수정하고 생성할 수 있게 하는 특징을 가지고 있음.
using UnityEngine; [CreateAssetMenu(fileName = "NewItem", menuName = "MyGame/Item")] public class ItemData : ScriptableObject { public string itemName; public int itemID; public Sprite itemIcon; public int itemValue; }
- 위 코드는 아이템 데이터를 저장하는 Scriptable Object의 에시임.
- [CreateAssetMenu] 속성은 Scriptable Object를 에디터 사엥서 생성할 때 사용되는 특성으로 이를 통해 에디터 메뉴를 만들 수 있음. (fileName: 새로 생성되는 파일 이름 / meuuName: 어떤 에디터 메뉴에 배치할지 정의.)
- 이 스크립트를 기반으로 ItemData 에셋을 생성할 수 있으며 에디터 상에서 데이터를 설정 가능함.
using UnityEngine; public class ItemController : MonoBehaviour { public ItemData item; private void Start() { Debug.Log("Item Name: " + item.itemName); Debug.Log("Item ID: " + item.itemID); } }
- 이제 이 ItemData를 사용하여 게임 내에서 아이템 데이터를 사용하는 작업을 수행할 수 있으며 데이터를 효과적으로 관리할 수 있음.
오브젝트 풀링
- 게임 성능의 향상을 위해 사용되는 디자인 패턴으로 리소스를 동적으로 생성 및 삭제하는 대신 미리 생성된 객체들을 재활용하여 사용함.
- 게임이 시작될 때 필요한 수의 오브젝트를 생성하고 풀에 저장한 후, 게임 내에서 필요할 때 풀에서 가져옴. 필요한 오브젝트를 풀에서 가져오면 해당 오브젝트는 활성화 상태로 변경되고 게임에 표시됨. 오브젝트 사용이 끝나면 다시 풀로 반환되며 필요할 때 재사용됨.
using UnityEngine; using UnityEngine.Pool; public class BulletPoolManager : MonoBehaviour { public GameObject bulletPrefab; // 풀링할 총알 프리팹 public int poolSize = 10; // 풀 크기 private ObjectPool<GameObject> bulletPool; private void Start() { // SimpleObjectPool을 사용하여 총알 오브젝트 풀 초기화 bulletPool = new ObjectPool<GameObject>(() => Instantiate(bulletPrefab), obj => obj.SetActive(false), poolSize, true, true); } private void Update() { if (Input.GetButtonDown("Fire1")) { // 오브젝트 풀에서 총알 가져오기 GameObject bullet = bulletPool.Get(); bullet.transform.position = transform.position; bullet.SetActive(true); // 총알 사용 후 일정 시간 후에 다시 풀로 반환 StartCoroutine(ReturnBulletToPool(bullet, 2.0f)); } } private IEnumerator ReturnBulletToPool(GameObject bullet, float delay) { yield return new WaitForSeconds(delay); // 총알을 오브젝트 풀로 반환 bulletPool.Release(bullet); } }
- 총알 오브젝트의 풀링 예시 코드로 풀에서 총알을 가져와서 발사하고 일정 시간 후에 총알을 다시 풀로 반환함. 이를 통해 총알 오브젝트를 효율적으로 재사용할 수 있음.
다음글이 없습니다.이전글이 없습니다.댓글