본문 바로가기

Unity

유니티 - 오브젝트 풀링(Object pooling) 오브젝트 풀링은 유니티에서 자주 사용되는 오브젝트를 생성과 파괴가 아닌 리스트(List)나 큐(Queue) 등에 저장해 두고 불러와 사용하고 사용 후엔 다시 반납하는 역할을 합니다. 유니티에서 ObjectPool이란 이름의 빈 오브젝트를 하나 만들고 아래 ObjectPool.cs를 넣어 줍니다.[System.Serializable]public class ObjectInfo { public string objectName; public GameObject perfab; public int count;}public class ObjectPool : MonoBehaviour{ public static ObjectPool instance; [SerializeField] Objec.. 더보기
유니티 (Unity) - 파일 데이터 비동기 방식으로 읽어 오기 유니티에서 게임의 설정을 Json 파일로 저장해 사용한다면 게임을 실행할 때마다 저장된 Json파일을가져와 게임의 설정 값에 대입시켜 주면 될 것입니다.문제는 JsonData.json 파일을 읽어 오는 도중에 게임 설정 값을 적용하는 코드로 넘어가 버리니 Null 에러가발생하게 됩니다.비동기 방식으로 JsonData.json 파일을 가져온 후 완료되었다면 게임 설정 값에 적용하는 방식을 알아보겠습니다. [System.Serializable]public class GameData { public int playerLevel; public int playerCurrntHp; public float playerPower;}우선 JsonData.json으로 변환될 간단한 GameData 모델이 .. 더보기
유니티 - 싱글톤 패턴(Singleton) 싱글톤 패턴은 가장 많이 사용하는 기본 패턴이니 따로 설명이 필요 없을 것 같습니다.바로 간편하게 적용할 수 있는 코드로 넘어가 보겠습니다.using UnityEngine;public class Singleton : MonoBehaviour where T : MonoBehaviour { public static T instance {get; private set;} protected virtual void Awake() { if (instance == null) { instance = (T)FindObjectOfType(typeof(T)); DontDestroyOnLoad(gameObject); } else { .. 더보기
유니티 - 커스텀 에디터 (Custom Editor) 커스텀 에디터 기능을 이용한 ScriptableObject 생성을 조금 더 편하게 도와줄 에디터를 만들어 볼까 합니다. 유튜브 AdamCyounis를 보다 편할 것 같아 만들어 보았습니다.https://www.youtube.com/channel/UC08QfQDLAd9D7aYPFgBUIng AdamCYounisCatch me live on twitch: Mon, Tues, Wednesday and Fri 1-6pm AEST. Twitch: http://twitch.tv/adamcyounis Twitter: http://twitter.com/adamcyounis Discord: https://discord.gg/9WkRG7s Become a Patron at https://www.patreon.com/ada.. 더보기
유니티 - CustomEditor 활용 (Inspector 꾸미기) 유니티에서 아이템이나 무기 등의 설정값으로 ScriptableObject를 사용하면서 해당 아이템이나 무기 등의 이미지를 상단에 표시해 주는 기능을 CustomEditor를 이용해 꾸며 보겠습니다. (아래 이미지 참조) 우선 사용자의 ScriptableObject 가 있을 겁니다. (아래 소스 참조)[CreateAssetMenu(menuName = "ScriptableObjects/WeaponValue")]public class WeaponValue : ScriptableObject { [Header("이름")] public string weaponName; [Header("이미지")] public Sprite weaponImage; [Header("파워")] public.. 더보기
유니티 (Unity) - 게임에 다중 언어 (Localization) 적용하기 유니티에서 제공해 주는 다중언어 시스템을 이용한 게임 적용 방법을 알아보겠습니다."사용된 유니티 버전은 2021.3 입니다. 버전에 따라 조금씩 차이가 있을 수 있습니다."  우선 Package Manager에서 Localization을 설치해 주세요. Project 창에서 "Language" 폴더를 하나 만들어 줍니다. (폴더의 이름은 다른 것으로 하셔도 됩니다.) Project Settings 창에서 Localization > Create를 클릭합니다. Create를 클릭하신 후 앞에 만들어 두었던 "Language" 폴더를 선택 후 저장. 폴더 저장 후 화면이 위와 같이 변경되면 Locale Generator를 클릭해 줍니다. 그럼 새창이 나오면서 게임에 적용될 언어를 선택할 수 있습니다.  우선 .. 더보기
유니티 (Unity) - 확률 뽑기(생성) https://docs.unity3d.com/kr/2019.4/Manual/RandomNumbers.html 랜덤 게임플레이 요소 추가 - Unity 매뉴얼여러 게임에서 임의로 선택되는 항목 및 값은 중요합니다. 이 섹션에서는 Unity에 내장된 랜덤 함수를 사용하여 일반적인 게임 역학을 구현하는 방법에 대해 알아봅니다.docs.unity3d.com 유니티에서 제공해 주는 확률 코드를 이용한 뽑기 및 기타 등등 여러 곳에서 사용할 수 있는 랜덤 확률 코드에 대해 알아보겠습니다.코드만 복사 붙여 넣기 해서 사용하는 것보단 내용을 알고 사용하는 게 더 도움이 되겠죠? public class RandomTest : MonoBehaviour { [Header("확률 설정")] public float[.. 더보기
유니티(Unity) - 클릭 이벤트 유니티 2d나 3d에서 오브젝트에 간편하게 클릭 처리를 할 수 있는 클릭 이벤트에 대해 알아보겠습니다.  우선 레이어(Layers)를 하나 추가해 주세요 아래 이미지처럼 "Test"라는 레이어를 추가했습니다. 그리고 카메라에 Physics Raycaster Component를 추가해 줍니다. Event Mask에 위에서 새롭게 추가한 Test 레이어를 선택해 주세요. 클릭 처리를 하고 싶은 오브젝트를 하나 생성해 주시고해당 오브젝트의 레이어를 Test로 변경합니다.ClickObject.cs를 해당 오브젝트에 추가해 줍니다. using UnityEngine;using UnityEngine.EventSystems;public class ClickObject : MonoBehaviour, IPointerCli.. 더보기
유니티(Unity) - 글자 타이핑 효과(Typing) 우선 Canvas에 테스트를 위한 Text UI와 Button을 하나씩 만들었습니다.둘 다 TextMeshPro를 사용하고 있습니다. 화면에 배치는 대충 이렇게 했습니다. Text의 정렬은 중앙으로 잡아 주었습니다.  Button에 Typing.cs 스크립트를 넣고 Button 이벤트에 위 이미지처럼 TypingButton을 연결시켜 줍니다.using System.Collections;using UnityEngine;using TMPro;public class Typing : MonoBehaviour { [Header("Text UI")] public TextMeshProUGUI textUI; [Header("타이핑 지연 시간")] public float delayTime; IEnumer.. 더보기
유니티(Unity) - 인스펙트 리스트 오류 (Inspector) 유니티 특정 버전에서 위 이미지처럼 인스펙터 창의 Serializable List 목록의 리스트 0번이 겹쳐 보이는 버그가 있습니다. 몇 개의 리스트를 사용하던 0번 목록이 겹치는 버그입니다. 해결 방법은 따로 없는 것 같습니다. 특정 버전에서 이런 문제가 발생하기 때문에 문제가 없는 버전으로 설치하는 방법뿐인 것 같습니다. 제가 사용했던 2021 버전 중 21.2.8 은 문제가 없었으며 그 이상 에선 다 겹치는 문제가 나타나더군요. 그리고 오늘 날짜 (6월 25일)의 최신 버전인 21.3.5에선 문제가 없었습니다. 아래 사이트에서 확인해 보시고 참고들 하세요. https://issuetracker.unity3d.com/issues/scriptableobject-with-an-array-of-serial.. 더보기