유니티
[이펙트] 텍스쳐 최적화
일반적으로 실무에서 TGA, PNG를 사용한다. TGA는 32bit로 저장하면 알파를 사용할 수 있다. (24bit는 알파 사용 불가능) PNG는 PNG24로 사용하고, (대체로, 언리얼에서 TGA를 사용하며 유니티에서 PNG를 사용한다) TGA보단 PNG 256x256 사이즈 기준으로 용량이 대략 25배 차이난다. (10kb < 250kb) 중요한 건 텍스쳐 포맷 형식 텍스쳐를 유니티로 불러오면 세팅이 중요하다. (1) Alpha Source 1. None - 알파를 사용하지 않는다. 2. Input TextureAlpha - 텍스쳐의 알파를 사용 3. From Gray Scale - 알아서 알파를 빼주는 기능 (2) Alpha Is Transparency - 이 기능을 체크하면 알파가 투명해진다. (..
연습장.
1. Screen.sleepTimeout = SleepTimeout.NeverSleep; 2. 스크롤안에 버튼이 들어가서 잘 안눌리는 경우가 발생한다. EventSystem 터치감도 조절private const float inchToCm = 2.54f; [SerializeField]private EventSystem eventSystem = null; [SerializeField]private float dragThresholdCM = 0.5f;//For drag Threshold private void SetDragThreshold(){ if (eventSystem != null) { eventSystem.pixelDragThreshold = (int)(dragThresholdCM * Screen.dp..
프리팹 UI생성시 크기가 디바이스마다 다른 경우
[문제]UI를 프리팹으로 만들어 스크립트상에서 생성하는 경우 (ex. 여러개의 버튼을 생성할 때) 디바이스마다 생성된 자식 오브젝트 스케일이값이 변경되는 문제가 생긴다. 예를 들어, 갤럭시S4에서 잘 보이던 버튼이 갤럭시노트5에서는 작게 나오는 경우가 발생한다. [해결 방법]Vector3.one을 사용한다. UI를 생성한 뒤 해당 버튼 스케일값을 Vector3.one으로 초기화해준다.
유용하게 쓰이는 Mathf 함수
Mathf.Abs(float f): 데이터 절대값 반환 Debug.Log(Mathf.Abs(-100));: 100 (결과값) Mathf.Clamp(float f, float min, float max): 최소값, 최대값 범위 내 데이터 반환: ※ 데이터가 1이고, 최소값 0, 최대값 10인 경우 1을 반환 for (int ii = 0; ii < 5; ii++){Debug.Log(Mathf.Clamp(ii, 1.0f, 3.0f));}: 1, 1, 2, 3, 3 (결과값) Mathf.PingPong(float A, float B): A값이 B값에 도달하면 -가 되고,: 0이 되면 다시 최대값까지 + void Update(){transform.position = new Vector3(Mathf.PingPong..
코루틴(Coroutine) #1
닷넷은 멀티쓰레드를 지원하고, 닷넷을 사용하는 유니티는 단일 쓰레드로 동작한다. 멀티쓰레드가 있는 코드는 버그 발생률이 높아지고, 멀티쓰레드간 교착 상태 경합 등 신경써야할 부분이 많아진다. 그렇다면 어떻게 멀티 태스킹을 손쉽게 구현할 수 있을까? 바로, 코루틴(Coroutine)을 사용해 멀티 쓰레드를 흉내낼 수 있다. '쓰레드를 사용하지 않고, 멀티 태스킹을 가능하게 한다.' 이게 어떻게 가능할까? 일반적으로 함수가 호출되고 끝나는 서브루틴 개념과 다르게 yield return을 사용해 해당하는 위치를 기억하고 다음 호출 때 그 곳부터 다음 부분을 실행할 수 있도록 하는 것이다. 그래서 여러 개의 코루틴을 동작시키고 각기 다른 시점에 yield가 반환되도록 한다면 마치, 여러개의 쓰레드가 동시에 동작..