반응형

프로그래밍/유니티 및 C# 11

[유니티] Update, FixedUpdate, LateUpdate 차이

https://iflife1124.tistory.com/4 유니티(unity) Update, FixedUpdate, LateUpdate 차이점Update, FixedUpdate, LateUpdate 차이점 Update() Update는 프레임마다 한번씩만 호출이 되는 기본적인 업데이트 입니다. FixedUpdate()FixedUpdate는 Update보다 자주 호출이 되는 경우가 있습니다.프레임 속도가 낮iflife1124.tistory.com  물체를 따라가는 카메라와 같은 경우에는 물체가 이동한 후 카메라가 움직일 수 있도록 LateUpdate를 사용하는 것이 좋다.

[유니티/C#] 여러 개의 오브젝트 풀링 구현하기 (Dictionary 사용)

던전에 사용할 총알을 오브젝트 풀링으로 구현하였다. 플레이어 총알과 몬스터 총알을 나누기 위해 만들었다. SerializeField인 ObjectPoolingPrefabs에 총알 프리팹을 넣어주면 프리팹 이름을 통해 오브젝트를 분류한다. 나는 싱글톤으로 DungeonManager를 생성해 그 안에 이 코드를 넣어주었다. Awake나 Start에 InitializeObject 함수를 넣어줘야 한다. [SerializeField] private GameObject[] ObjectPoolingPrefabs; private Dictionary poolingObjectPrefabs = new Dictionary(); private Dictionary poolingObjectQueues = new Dictionar..

[유니티/C#] 책 UI 만들기

위와 같은 책을 만들어보자. 구조는 이렇게 되어 있다. public class RecipePanel : MonoBehaviour { public List recipePages; // 페이지를 저장해둘 리스트 int pageIndex = 0; // 현재 페이지 인덱스 public GameObject frontPageButton; // 누르면 앞 페이지로 이동하는 버튼 (왼쪽) public GameObject backPageButton; // 누르면 뒤 페이지로 이동하는 버튼 (오른쪽) public GameObject pages; // 페이지를 담아둘 부모 오브젝트 public GameObject pagePrefab; // 페이지 프리팹 // 레시피북을 여는 버튼을 눌렀을 때 public void OnRec..

[유니티/C#] Content 크기에 맞춰 늘어나는 Scroll View 만들기(유동적인 Scroll View)

왼쪽에 보이는 것과 같은 스크롤 뷰를 만들어보자. 퀘스트 페이지는 이런 식으로 구성되어 있다. Page2는 오른쪽에 표시되는 내용들이 담겨 있다. foreach (var p in GameManager.instance.ongoingQuests) { foreach (var oq in p.Value) { GameObject tempSlot = Instantiate(questSlotPrefab, ongoingQuestContents.transform); tempSlot.GetComponent().UpdateSlot(GameManager.instance.quests[oq.NPCName][oq.QID]); } } 인벤토리 만드는 것과 비슷하다. public GameObject 선언해서 프리팹 담아주고 (questS..

[유니티 2D/C#] 탑다운 뷰에서 아이템이 바닥에서 튕기는 연출 만들기

탑다운 뷰에서 아이템이 바닥에 튕기도록 만들어보자. 비어있는 게임 오브젝트를 하나 만들고 오브젝트 안에 아이템 스프라이트와 가상 바닥을 넣어주었다. 탄성을 넣어야 하기 때문에 project 창에서 우클릭 - Create - 2D - Physics Material 2D를 눌러 만들어준다. https://docs.unity3d.com/kr/530/Manual/class-PhysicsMaterial2D.html 물리 머티리얼 2D(Physics Material 2D) - Unity 매뉴얼 Physics Material 2D 는 2D 물리 오브젝트 간에 충돌이 발생할 때 일어나는 마찰과 탄성을 조정하기 위해 사용합니다. 에셋 메뉴에서 물리 머티리얼 2D를 생성할 수 있습니다(Assets > Create > Ph..

[유니티/C#] csv 파일을 원하는 타입으로 읽기(Generic 사용)

string LINE_SPLIT_RE = @"\r\n|\n\r|\n|\r"; public List ReadCSV(string fileName) where T: CSVData, new() { List list = new List(); var data = Resources.Load(path + fileName) as TextAsset; string[] lines = Regex.Split(data.text, LINE_SPLIT_RE); for (int i = 1; i < lines.Length - 1; i++) { string[] values = lines[i].Split(','); for (int j = 0; j < values.Length; j++) { string value = values[j]; val..

[유니티/C#] Scroll View에 유동적인 Text 넣기

Hierachy 창에서 우클릭 - UI - Scroll View를 눌러 Scroll View를 만든 후 Content 안에 UI - Text를 넣어줍니다. Scroll View 내의 Content 안에 Vertical Layout Group, Content Size Fitter를 넣어준 후 사진과 같이 설정해줍니다. https://docs.unity3d.com/kr/2017.4/Manual/script-VerticalLayoutGroup.html 수직 레이아웃 그룹 - Unity 매뉴얼 수직 레이아웃 그룹 컴포넌트는 자식 레이아웃 요소를 쌓습니다. 요소의 높이는 다음 모델에 따라 각각 최소, 선호, 가변 높이를 기준으로 결정됩니다. docs.unity3d.com https://docs.unity3d.co..

[유니티/C#] Json을 원하는 타입으로 읽기/쓰기 (Generic 사용)

Newtonsoft의 Json.NET을 사용하였다. using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.IO; 밑의 코드들은 위의 코드를 넣어주어야 사용 가능하다. Data = ReadJson("Json 파일명"); public T ReadJson(string fileName) { TextAsset textAsset = Resources.Load(fileName); return JsonConvert.DeserializeObject(textAsset.ToString()); } Assets/Resources 안에 있는 Json 파일을 읽어오는 코드이다. filePath = Application.persistentDataPath; Data = Re..

[유니티/C#] 드래그 앤 드롭(Drag and Drop) 시스템 만들기

짤처럼 음식을 드래그 해서 손님한테 주는 시스템을 만들었다. // 음식 오브젝트에 넣은 코드 public class FoodController : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler { Vector3 DefaultPos; // 드래그 시작 void IBeginDragHandler.OnBeginDrag(PointerEventData eventData) { // 올바르지 않은 곳에 드래그 했을 때 돌아갈 위치를 저장해준다 DefaultPos = this.transform.position; // 드래그 시작 되었을 때는 드래그 중인 오브젝트의 레이캐스트 타겟을 꺼줘야 오류가 생기지 않는다 GetComponent().raycastTa..

반응형