터치 혹은 마우스 클릭으로 회전 시키고 싶은 타겟의 중심 기준 원을 그리면 타겟이 입력에 따라 회전하게되는 코드입니다. GetAngle 함수를 통해 타겟의 중심인 피벗과 입력(마우스 혹은 터치)의 각도(0~360 범위)를 구하고 구한 각도의 이전 값과 현재 값의 차를 통해 구한 변화량을 타겟의 각도 값에 대입하여 타겟을 회전시킵니다. 1234567891011121314151617181920212223242526272829303132333435363738394041using UnityEngine; public class CircleGesture : MonoBehaviour { public Transform target; float previous; float current; private void Upda..
유니티에서 기본적으로 제공하는 sprite diffuse 셰이더는 sprite 뒷면의 빛 계산을 하지 않습니다. 밑의 셰이더는 앞 뒤 어느 각도에도 같은 빛을 받는 셰이더 입니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889Shader "Custom/BackLightDiffuse" { Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", C..
기본으로 제공되는 PlayerPrefs는 int, float, string 형식만 지원하기 때문에 다른 형식을 지원하는 클래스를 미리 구현하면 편리하게 사용이 가능합니다. 123456789101112131415161718192021222324252627282930313233343536373839public static class PlayerPrefsExtension{ public static void SetBool(string key, bool value) { if (value) PlayerPrefs.SetInt(key, 1); else PlayerPrefs.SetInt(key, 0); } public static bool? GetBool(string key) { int tmp = PlayerPrefs...
화살표(방향 지시 UI)를 목표로 이동시킨 뒤 카메라 범위를 넘어간 거리를 비례식을 통해 변경 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152using System.Collections;using System.Collections.Generic;using UnityEngine; public class Navigation : MonoBehaviour { public float arrowSpeed; public Transform currentLocation; public Transform target; // Update is called once per frame void Update ..
'요청 자체를 캡슐화하는 것입니다. 이를 통해 요청이 서로 다른 사용자를 매개변수로 만들고, 요청을 대기시키거나 로깅하며, 되돌릴 수 있는 연산을 지원합니다.' - GoF의 디자인 패턴 GoF의 디자인 패턴에 나오는 명령 패턴의 설명입니다. 대강 알아는 듣겠지만 정확히 무슨 말인지 모호합니다. 그래서 저는 명령 패턴을 '함수 호출을 객체로 만드는 방법' 이라고 나름대로 정의했습니다. 즉 명령 패턴은 함수 호출 이라는 동작을 객체로 만들기 때문에 이 동작을 저장하거나 함수의 인자로 사용할 수 있게 만듭니다. 명령 패턴의 사용 예로는 함수 호출을 저장하거나 함수의 인자로 사용할 수 있기 때문에 게임에서의 입력키 변경, undo, 등에 사용될 수 있습니다. 명령 패턴의 구현은 Command 인터페이스를 만드는..
1. Firebase 페이지에 접속합니다. https://console.firebase.google.com/ 2. 프로젝트 추가 임의의 프로젝트 이름을 넣고 위치를 대한민국으로 변경한 후 프로젝트 만들기 버튼을 눌러 프로젝트를 생성합니다. 프로젝트 ID는 데이터베이스에 접근할 URL에 사용됩니다. 3. 앱 추가 안드로이드 아이콘을 클릭하여 앱 추가 페이지로 들어갑니다. 이 페이지에서 입력하는 패키지 이름은 유니티 패키지 이름과 동일해야 합니다. google-services.json 파일을 다운로드 합니다. 이 파일은 Unity Assets 폴더에 들어가게 됩니다.https://firebase.google.com/docs/unity/setup?authuser=0#add-the-sdk-android 이곳에서..
출처 : https://www.youtube.com/watch?v=cSwB2brGVPY - 오지현 Evangelist 요약 Transform 변경은 유니티 엔진을 구성하는 C++ 레이어에 메세지를 보낸다 이는 성능에 악영향을 끼친다. 최적화 방법으로는 1. SetPositionAndRotation을 사용하자2. Optimize Game Objects 옵션을 활성화 시켜주자 본문 Transform은 모든 게임 오브젝트에 존재합니다. 이 Transform이 변경이 되면 c++로 이루어진 유니티 엔진 내부에 'OnTransformChanged' 라는 메세지를 보냅니다. 대부분의 경우 게임 오브젝트는 부모 자식 관계를 갖는 계층 구조를 갖게됩니다. 부모의 Transform이 변경이될 경우 자식의 모든 Trans..
출처 : https://www.youtube.com/watch?v=qwQ16sS8FSs 1. 옵저버 패턴 옵저버 패턴은 특정 객체(Subject)의 상태 변화에 따라 특정 객체와 연결된 다른 객체들(Observer)이 영향을 받는 1 : N 관계이다. 옵저버 패턴은 Observer, Subject 두 종류로 나뉘는데 Observer는 Subject의 상태 변화를 관찰하는 객체이며 Subject는 Observer에게 상태 변화를 알리는 객체이다.옵저버 패턴을 사용하는 이유로는 결합도를 낮추고 응집도를 높여 객체지향적인 프로그래밍을 하기 위해서이다. 특정 객체(Subject)의 상태 변화에 따라 영향을 받는 다른 객체들(Observer)이 무수히 많다면 특정 객체에는 다른 객체들의 정보가 무수히 필요하게되며..