본문 바로가기

반응형

Unity

(30)
유니티 실행환경 프레임 고정시키기 + 에디터에서 프레임 확인하기 모두들 보통 게임을 개발할때 60프레임을 기본으로 생각하고 개발하실것 같은데요. 에디터에서는 성능에 따라 프레임이 200이 경우도 있어서, 제한을 걸어두지 않으면 개발이 원활하지 않습니다. 유니티에서 안드로이드 앱을 빌드하는 경우에는 기본 프레임을 30으로 설정하여 빌드하는데요. 이 설정값을 60으로 변경하는 방법입니다. private void Start() { Application.TargetFrameRate = 60; } 이렇게 설정해두면 기기에서도 프레임이 60으로 설정되고, 에디터에서 개발할때도 프레임이 60으로 고정됩니다. 실행시에 에디터에서 프레임을 확인하는 방법은, Game 윈도우의 Stats 버튼을 클릭하면 확인 가능합니다. Statsistics 창에서는 프레임 외의 정보도 확인 가능한데,..
Audiosource 출력 소리의 스펙트럼(파형) 시각화하기 **구현할때 DoTween을 사용합니다(DoScaleY). 구현시 transform.localScale로 변경 가능합니다. 소리의 스펙트럼을 게임오브젝트들로 표시하려면 먼저 audioSource로부터 스펙트럼 데이터를 받아와야 합니다. 이때 함수는 GetSpectrumData()를 사용하고, 이 함수는 float[] 형식으로 현재 시점의 스펙트럼 데이터를 리턴합니다. 리턴 받을 float[] 배열은 64, 128, 256 등등 2의 제곱수로 크기를 지정해주면 되고, 크기가 클수록 정확한 값을 리턴받을 수 있습니다. 다만 이 기능에서는 그정도까진 필요 없을듯해서 최소값인 64로 받아왔습니다. 기본적인 사용 방법은 아래와 같습니다. private float[] spectrumData; void Update(..
Unity 인스펙터(inspector) 정리하기 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..
Scene 변경시 이벤트 호출 유니티에서 Scene을 변경할때 특정한 동작을 실행하고 싶을때, Load 또는 Unload시의 이벤트를 추가하는것으로 구현할 수 있습니다. 다음은 Scene이 변경될때 이전 Scene과 변경되는 Scene의 이름을 저장하는 클래스입니다. public static class LoadSceneManager { public static string previousSceneName; public static string currentSceneName; //앱 시작시 임의의 클래스에서 LoadSceneManager.Initialize()를 호출해야 각 이벤트들이 추가됩니다. public static void Initialize() { SceneManager.sceneLoaded += LoadSceneEvent; ..
Scene 이동시 이전 씬의 정보 저장 이전 씬의 정보를 저장하는 방법은 크게 2가지가 있는데요. 1. Static Class에 저장 사실 이전 씬의 정보를 저장한다기보단 메모리에 저장되있기때문에 Scene을 변경해도 클래스가 사라지지 않습니다. 다만 MonoBehaviour를 상속받을 수 없고, 씬 안의 오브젝트를 제어할 수 없기 때문에 어느정도 제약이 있습니다. public static class StaticClass { public const float StaticValue = 1.0f; public string StaticString; } 2. DontDestroyOnLoad() 사용 DontDestroyOnLoad()는 본인 클래스와 본인 클래스가 컴포넌트로 추가된 게임 오브젝트를 씬 전환시에도 사라지지 않도록 합니다. public ..
Unity에서 사용 가능한 C# BezierCurves 일반화 함수 사용되는 변수들 public GameObject torpedo; public List transformList; private List vectorsList; public float speed; torpedo : 곡선을 따라 움직일 오브젝트 transformList : 베지어 곡선의 point 오브젝트들 vectorsList : point 오브젝트들의 transform.position 값들 speed : 오브젝트의 속도 베지어 커브 계산 함수 private static Vector3 Bezier(List points, float value) { List step1 = points.ToList(); int pastTemp = 0; for(int i = 1; i < points.Count; i++) { va..

반응형