일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 랜덤
- ui
- UGUI
- 모션
- unity3D
- scrollrect
- 광고테스트
- 열거형
- 컴퓨터구조
- http
- 유니티기초
- React Native
- unity
- 코딩테스트
- enum
- climbingtheleaderboard
- 애드몹
- 전면광고
- canvasgroup
- csvhelper
- 유니티
- LINQ
- 애니메이션
- Admob
- 게임개발
- Hackerrank
- dotween
- cs
- 프로그래머스
- C#
- Today
- Total
목록unity (25)
Ruya Games
Game창이나 Scene창 등이 모종의 이유로 없어졌을때 다시 여는 방법입니다. 간단하게는 아래 스크린샷처럼 ...클릭 > Add Tab에서 열려는 창을 선택하면 됩니다. 다른 창을 열고싶으시면 상단의 Window탭에서 선택해서 열 수 있습니다.
게임이 실행중일때 게임을 잠시 멈추고 싶다면 Unity의 TimeScale값을 변경해주면 됩니다. 스크립트상에서 변경하는 방법은 다음과 같습니다. Time.timeScale = 0f; 실행중일때 테스트용으로 속도를 실시간으로 조정하고싶으시다면, Project Settings > Time에서 변경 가능합니다. (Project Setting창은 Edit > Project Setting 또는 File > Build Settings > Project Setting 으로 진입 가능합니다)
구독 또는 상품 판매 설정을 위해 유니티 IAP 설정을 켜야하는데, Google License Key를 입력하라는 란이 있습니다. 밑에 설명도 나와있지만 구글 플레이콘솔이 업데이트되면서 해당 메뉴는 사라졌습니다. 바뀐 콘솔에서 라이센스 키는 앱 선택 > 메뉴 하단의 "수익 창출" > "수익 창출 설정" 메뉴에서 확인 가능합니다.
UGUI로 화면을 구성하고 테스트할때, 갑자기 잘 되던 터치가 안되거나, 버튼이 눌리지 않는 경우가 있는데요. 기본적으로는 3가지 경우가 있습니다. 1. 레이어 순서 맞추기 유니티의 UGUI는 하이어라키상에서 같은 부모일때 아래로 내려갈수록 위에 배치됩니다. 아래와 같이 5개의 오브젝트가 있고, 모두 겹쳐있다면 가장 아래에 있는 Button_4만 클릭할 수 있는 것이죠. 따라서 이러한 경우에는 배경으로 사용할 오브젝트의 자식index를 가장 위로 올려줘야 합니다. 2. Raycast target 값 설정 배경으로 사용하고 싶지 않아서 다른 오브젝트 앞에 표시하고 싶지만 터치 이벤트를 받고싶지는 않다면, 해당 오브젝트의 Raycast Target설정을 체크 해제하면 됩니다. 3. EventSystem 컴포..
모종의 이유로 list의 맨앞 또는 맨뒤 값을 제거하고 싶을때가 있는데요. list.RemoveAt을 사용하면 Index를 사용해서 원소를 제거할수 있습니다. var myList = new List(); ... myList.RemoveAt(0) // 맨처음 원소 제거 myList.RemoveAt(myList.Count - 1) //마지막 원소 제거 이렇게 제거하면 됩니다. 다만 유의할점은 위의 예시처럼 gameObject들이 담긴 List라면 리스트에서 원소를 제거해도 씬에서 gameObject들은 삭제되지 않습니다. 원인은 list에 담긴 gameObject 정보들은 참조값이고, RemoveAt함수는 리스트 내의 참조값만을 제거하기 때문입니다. 따라서 리스트에 담긴 게임오브젝트를 실제로 유니티 씬 안에..
이번에 구현해야 할 내용은 움직이는 오브젝트를 이어서 생성하기 입니다. 무한맵도 비슷한 느낌으로 구현 가능합니다. 아래는 간단한 구현 방법입니다. 1. Time.deltaTime으로 리스폰 시간 설정 Time.deltaTime을 사용해서 리스폰 시간을 관리합니다. 아래는 사용 예시입니다. private float timeSinceLastSpawn; private const float respawnTime = 5f; private void Update() { if (respawnTime < timeSinceLastSpawn) { timeSinceLastSpawn = 0f; //여기에 오브젝트 생성 함수를 추가합니다. } else { timeSinceLastSpawn += Time.deltaTime; } }..
모두들 보통 게임을 개발할때 60프레임을 기본으로 생각하고 개발하실것 같은데요. 에디터에서는 성능에 따라 프레임이 200이 경우도 있어서, 제한을 걸어두지 않으면 개발이 원활하지 않습니다. 유니티에서 안드로이드 앱을 빌드하는 경우에는 기본 프레임을 30으로 설정하여 빌드하는데요. 이 설정값을 60으로 변경하는 방법입니다. private void Start() { Application.TargetFrameRate = 60; } 이렇게 설정해두면 기기에서도 프레임이 60으로 설정되고, 에디터에서 개발할때도 프레임이 60으로 고정됩니다. 실행시에 에디터에서 프레임을 확인하는 방법은, Game 윈도우의 Stats 버튼을 클릭하면 확인 가능합니다. Statsistics 창에서는 프레임 외의 정보도 확인 가능한데,..
리스트나 배열의 원소들의 순서를 랜덤으로 섞는 방법은 linq와 Guid를 사용해서 간단히 구현 가능합니다. using System.Linq; public class GameManager : MonoBehaviour { public List randomList; void Start() { randomList = randomList.OrderBy(_ => Guid.NewGuid()).ToList(); } }
**구현할때 DoTween을 사용합니다(DoScaleY). 구현시 transform.localScale로 변경 가능합니다. 소리의 스펙트럼을 게임오브젝트들로 표시하려면 먼저 audioSource로부터 스펙트럼 데이터를 받아와야 합니다. 이때 함수는 GetSpectrumData()를 사용하고, 이 함수는 float[] 형식으로 현재 시점의 스펙트럼 데이터를 리턴합니다. 리턴 받을 float[] 배열은 64, 128, 256 등등 2의 제곱수로 크기를 지정해주면 되고, 크기가 클수록 정확한 값을 리턴받을 수 있습니다. 다만 이 기능에서는 그정도까진 필요 없을듯해서 최소값인 64로 받아왔습니다. 기본적인 사용 방법은 아래와 같습니다. private float[] spectrumData; void Update(..
Header 필드 그룹에 이름을 지정해줄 수 있습니다. [Header ("Test")] public index newIndex; public GameObject box; Space 필드 사이에 여백을 줄 수 있습니다. [Space (10f)] public int newIndex2; public GameObject box2; Range 변수의 값을 슬라이더로 변경할 수 있도록 합니다. 정수, 실수형 모두 적용 가능 [Range (0f, 1f)] public float newFloat; [Range (0f, 1f)] public int newInt; SerializeField private로 선언된 필드를 Inspector상에 표시합니다. [SerializeField] private int secretInt..