Unity

· Unity/Tip
이 포스팅에서는 객체지향 프로그래밍 원칙으로 유명한 S.O.L.I.D 원칙을 유니티에 적용하여 이해하기 쉽고 유연하며 유지보수가능한 코드구조를 만드는 방법을 설명합니다. SRP(Single Responsibility Principle): 단일 책임 원칙 클래스를 변경해야 할 이유는 오직 한가지여야 한다. 유니티에 이 원칙을 적용시켜보면, 컴포넌트 단위로 생각해볼 수 있다. 즉, 게임 오브젝트는 한가지 목적을 위해 만들어진 여러개의 컴포넌트의 조합으로 구성되어야한다고 할수 있다. 따라서 Player.cs, Enemy.cs 와 같은 목적을 알 수 없는 컴포넌트가 아니라, PlayerInput.cs, Health.cs, WeaponHandler.cs 와 같은 분명한 목적을 가진 컴포넌트를 작성해야 한다는 뜻이..
· Unity/Tip
URP환경에서 그림자 설정은 Universal Render Pipeline Asset에서 설정할 수 있다. 이 파일을 열어보면 여러개의 탭이 있는데, Lighting탭과 Shadows탭을 건들여줘야된다. Lighting Lighting탭에보면 Main Light 하위에 Shadow Resolution이라는 값이 있는데, 이는 Main Light에 대한 섀도우맵 텍스쳐의 크기를 제어한다. 이 값을 높이면 높일수록 더 매끈하고 디테일한 그림자를 얻을 수 있다. 그 다음 Additional Lights하위에 Shadow Atlas Resolution이라는 값이 있다. 마찬가지로 Additional Lights에 대한 섀도우맵 텍스쳐의 크기를 조절한다. 이 역시 값을 높이면 높일수록 더 좋은 그림자를 얻을 수 ..
public IEnumerator Shake(float duration, float magnitude) { Vector3 orignalPosition = transform.position; float elapsed = 0f; while (elapsed < duration) { float x = Random.Range(-1f, 1f) * magnitude; float y = Random.Range(-1f, 1f) * magnitude; transform.position = new Vector3(x, y, -10f); elapsed += Time.deltaTime; yield return 0; } transform.position = orignalPosition; }
· Unity/Tip
Move Move함수에는 인자로 움직일 방향과 델타타임을 곱해준 값을 넘겨주어야합니다. 즉 움직임의 델타값을 받습니다. 반환값은 CollisionFlags라는 플래그값을 반환하는데, 이는 캐릭터가 충돌한 방향을 알려줍니다. 플래그값을 사용하는 방법은 아래의 링크에서 확인해보세요. 그리고 Move함수는 중력의 영향을 받지 않습니다. Unity - Scripting API: CollisionFlags Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and w..
· Unity/Tip
유니티의 UI요소가 클릭되었는지 혹은 드래그 되었는지 등등 알고싶을때가 있죠. 이때 사용할 수 있는 함수들이 있습니다. 아래에서 소개하는 모든 함수들은 Image, RawImage, Text 컴포넌트중 하나이상이 부착되어 있는 상태에서 해당 컴포넌트의 Raycast Target 필드가 체크되어 있어야합니다. 또한 해당 함수들을 구현하기 위해서 해당 함수를 가지고있는 인터페이스를 상속받아야합니다. 인터페이스명은 함수위에 적어놓았습니다. //IBeginDragHandler public void OnBeginDrag(PointerEventData eventData) { Debug.Log("Drag Begin"); } //IDragHandler public void OnDrag(PointerEventData e..
· Unity/Tip
유니티는 에디터에 콘솔창에 뜨는 모든 메세지들을 로그파일에 저장하는데, 빌드된 게임의 로그도 이 로그파일에 저장된다. 이 로그파일의 경로는 윈도우 기준 아래와 같다. 아래 경로로 가기위해선 윈도우에서 숨긴폴더표시 기능을 사용해야 할 수도 있다. %USERPROFILE%\AppData\LocalLow\CompanyName\ProductName\Player.log
· Unity/Tip
가끔 어떤 오브젝트들은 오브젝트의 피벗과 중심이 다른 경우가있다. 가끔 오브젝트의 피벗위치가 아니라 중심을 얻고 싶은경우가 있는데, 이때는 아래와 같은 방법을 사용하면된다. renderer.bounds.center 위 코드는 렌더러의 바운딩 박스에서 중심을 얻어오는데 이 바운딩 박스는 오브젝트를 둘러싸고 있는 박스라고 생각하면 된다. 여기서 이 바운딩 박스의 중심은 월드스페이스상에서 중심위치를 반환한다. 따라서 바운딩 박스의 중심을 얻어온다는 것은 월드스페이스에서의 오브젝트의 중심을 얻어오는것과 같다.
· Unity/Tip
유니티로 게임을 제작하다 보면 게임이 시작되기 전에 특정 오브젝트가 씬에 로드되어 있으면 하는 순간들이 있습니. 그냥 Hierarchy창에서 미리 만들어두거나 싱글톤을 사용하는 방법도 있지만, 이 글에서는 유니티 어트리뷰트를 이용한 방법을 설명하겠습니다. 유니티는 "RuntimeInitializeOnLoadMethod" 라는 어트리뷰트를 지원하는데, 이 어트리뷰트를 가진 함수는 씬이 로드되기 전에 호출될 수 있습니다. using UnityEngine; public class BootStrapper { [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] public static void CreateNeededObjectsBe..
YMS Games
'Unity' 카테고리의 글 목록 (2 Page)