Today I Learned (36) 썸네일형 리스트형 [TIL][Unity] 확률 가중치 부여하기 확률 가중치대부분의 게임에서 확률형 아이템을 사용할 때, 가치가 높은 아이템의 경우 일반 아이템에 비해 등장 확률이 작다. 이를 흔히 확률에 가중치를 부여했다고 한다. 오늘은 개인 프로젝트를 진행하며 해당 부분의 구현을 진행하였다. private float GetWeightByRank(string rank){ switch(rank) { case "일반": return 70.0f; case "희귀": return 25.0f; case "전설": return 5.0f; default: return 1.0f; }} 우선은 다음과 같은 메서드를 작성하였다. 유닛의 등급.. [TIL][Unity] PlayerPrefs 이용하기 PlayerPrefs이번 진행한 프로젝트는 러닝액션 게임으로 획득 점수로 겨루는 게임이다. 점수를 획득하고 계산하는 기능은 그다지 어렵지 않다. 하지만 과연 여태 획득한 점수, 그 중에서 최고 점수를 기록하고 싶을 때, 어떤 방법을 사용하는 것이 좋을까? 간단한 데이터 저장하기Unity에서 유저의 데이터를 저장하기 위해 JSON 파일을 많이 사용한다. 이는 직렬화를 통해 저장된 데이터의 보안을 확보할 수 있다는 장점이 있지만, 우리의 프로젝트와 같이 간단한 데이터를 저장하기 위해 사용하기엔 구현이 복잡하다. 따라서 우리는 PlayerPrefs를 사용하여 간단한 데이터를 저장하기로 결정했다. 키워드와 데이터PlayerPrefs를 통해 데이터를 저장하기 위해서는 키워드를 사용해야 한다. 말 그대로 저장된 데.. [TIL][Unity] 오브젝트 충돌 시 효과음 출력 오브젝트 충돌 시 효과음 출력오늘 팀 프로젝트를 진행하며 배경음악 및 효과음 넣기 파트를 맡아 진행하기로 하였다. 저번 개인 프로젝트를 진행하며 Audio Source 기능을 구현할 때 Scene의 AudioManager와 같은 오브젝트를 생성하여 이 오브젝트가 Audio 기능을 도맡아 수행하도록 구현하는 것이 좋다는 피드백을 받았다. 따라서 이번 프로젝트에서 효과음 출력을 AudioManager 오브젝트에서 담당하기로 하였다....만 장애물 오브젝트, 점수를 제공하는 코인 오브젝트 등 너무 다양한 AudioClip이 필요했다. 일단 내가 아는 방법을 먼저 적용하기로 하였다. 각 장애물 및 코인 오브젝트에는 Player 오브젝트와의 충돌을 감지하는 메서드가 존재한다.public virtual void O.. [TIL][Unity] 인터페이스 인터페이스오늘 아침 팀 프로젝트 일간 회의에서 재휘님이 작업 피드백으로 '장애물 오브젝트 스크립트에 인터페이스를 적용하라'고 하셨다. 강의를 들어 적용법에 대해 알고 있었기에 알았다고 하였으나, 정확히 왜 인터페이스를 사용해야 하는지 이해하지 못했다. 따라서 오늘 저녁 식사 이후 시간은 온전히 인터페이스에 대해 이해하고 사용하는 이유를 공부하는데에 사용하였다. 인터페이스란?인터페이스를 왜 사용하는지 알아보기 이전에 인터페이스가 정확히 무엇인지 알 필요가 있었다.인터페이스란, 추상화를 달성하고 객체가 서로 상호작용할 수 있도록 하는 강력한 도구이다.사실 위 문장만으로 인터페이스를 정확히 이해할 수 없다. 따라서 풀어 설명하자면, 인터페이스는 상속 받는 클래스에서 구현해야 할 기능, 내용에 대한 템플릿을 제.. [TIL][Unity] 싱글톤 패턴 싱글톤 패턴Unity를 통해 게임을 개발하면 여러 스크립트로 이루어진 게임 요소들을 GameManager 스크립트를 선언하여 관리하는 경우가 많다. 이 경우 다른 스크립트에서 GameManager에 접근하기 위해 인스턴스를 생성하곤 한다.//GameManager.cs - 싱글톤 Xpublic class GameManager : MonoBehaviour{ public void InitializeGame() { Debug.Log("게임이 초기화되었습니다."); }} 위와 같이 싱글톤 패턴을 사용하지 않은 GameManager.cs가 있다고 가정하자.그리고 다른 스크립트 Example.cs에서 해당 스크립트에 접근해 InitializeGame 메서드를 실행하고자 한다면코드는 다음과.. [TIL][Unity] 오브젝트 풀링 팀 프로젝트 시작24.06.03 월요일 '3D 런닝액션 게임 제작'을 주제로 팀 프로젝트가 시작되었다. 필수 요구사항 중 내가 맡은 요구사항은 다음과 같다장애물 생성 로직 : 오브젝트 풀링을 이용하여 장애물이 지속적으로 생성되도록 하는 로직 구현맵 요소 구성 : 실제 플레이어는 움직이지 않으나 움직이는 듯한 느낌이 들도록 맵 구성점수 시스템오늘 구현한 기능은 장애물 생성 로직, 맵 요소 구성이다. 두 파트 모두 오브젝트 풀링을 이용하였다. 오브젝트 풀링오브젝트 풀링은 이미 많이 다루었던 코딩 기술이다. 하지만 제대로 이해하지 못해 다루는 데에 어려움을 겪었다. 앞으로도 많이 사용될 기술이기에 이번 기회에 확실히 이해하고 넘어가고자 하였다.위 영상은 상술한 두 요구사항을 구현한 것이다. 두 요구사항 모두 .. [TIL][Unity] 직렬화 특강 직렬화와 역직렬화Unity 에서 많이 생성되는 적이나 투사체 등의 오브젝트에 주로 Prefab 기능을 사용하곤 한다. 이 Prefab과 같이 어딘가에 정보를 보관했다가 그대로 다시 가져올 수 있는 것을 직렬화와 역직렬화라고 한다.이는 이미 Unity 에서 여러 요소에 적용되어 있는 부분이다. PlayerPrefs간단한 값을 저장, 불러오기 할 때 좋다. 저장할 때 Key와 Value를 입력하여 저장하고 불러올 때 Key값을 이용하여 불러온다. CSV엑셀 형태의 파일로 기획자와 협업할 때 편리하다.직렬화 시 엑셀에 쓰인 내용을 그대로 표현한다. PlayerPref과는 달리 '\n' + ', '로 구분된다.역직렬화시 위 구분점을 토대로 구분하여 실제 데이터에 대입한다. XML저장할 값들이 어떤 Key값을.. [TIL][Unity] 트러블슈팅 - 움직이는 오브젝트에서 오디오 재생 트러블슈팅 - 움직이는 오브젝트에서 오디오 재생실생활에서 차량이 움직일 때, 차량이 가까이 다가오면 소리가 크게 들리고 멀어지면 소리가 작아진다. 이를 프로젝트의 차량 오브젝트에 적용하고 싶었다.최초로 코드를 통해 플레이어와의 거리를 계산하여 일정 거리 이하일 때 오디오 볼륨값을 높이는 방식을 사용하였으나 잘 되지 않았다.문제 : 오디오 볼륨이 서서히 커지는 것이 아닌, 스위치를 켜고 끄듯 들렸다 들리지 않았다 함 원인은 지속적으로 볼륨을 올려주는 것이 아니라 한 번에 지정한 값으로 상승시켰기 때문이다.원인 : 조건문의 조건 설정 오류로 인한 코드 오작동 이 문제에 대해 조사하던 중 조건문을 재설정 하는 것이 아니라 기본 제공되는 기능을 사용하여 이 문제를 쉽게 해결할 수 있음을 알았다.Audio Sou.. 이전 1 2 3 4 5 다음 목록 더보기