[ Unity ]/- 유니티 실습124 유니티 Lambda ▣ 람다식(Lambda Expression)이란? 람다식은 익명 함수를 생성하는 간결한 방법입니다. C#에서 메서드를 정의하지 않고도 함수나 연산을 간단하게 표현할 수 있습니다. 람다식은 주로 델리게이트(Delegate) 또는 이벤트(Event)와 함께 사용됩니다. ▣ 람다식의 기본 형태는 다음과 같습니다:(매개변수) => 식; ▣ 람다식의 기본 구조 매개변수: 메서드처럼 여러 개의 매개변수를 가질 수 있습니다. 매개변수가 하나일 경우 괄호 ()를 생략할 수 있습니다. 화살표 연산자 (=>): 매개변수와 본문을 구분합니다. 본문: 단일 식일 수 있으며, 이 식의 결과가 반환됩니다. 여러 줄의 코드가 필요한 경우 중괄호 {}를 사용하고, 명시적으로 return 키워드를 사용해야 합니다. ▣ Func는.. 2024. 8. 28. 유니티 interface ▣ 인터페이스(interface)는 C#에서 클래스 또는 구조체가 구현해야 하는 멤버들의 집합을 정의하는 데 사용되는 계약(contract)입니다. 인터페이스는 메서드, 속성, 이벤트, 인덱서 등의 시그니처만을 포함하며,실제 구현은 제공하지 않습니다. 이를 통해 서로 다른 클래스들이 동일한 기능을 구현하도록 강제할 수 있습니다. ▣ 인터페이스를 사용하는 이유 일관성 유지: 인터페이스를 통해 다양한 클래스들이 동일한 메서드나 속성을 구현하도록 강제할 수 있습니다. 다형성 지원: 인터페이스 타입을 사용하여 서로 다른 클래스의 객체를 동일한 방식으로 다룰 수 있습니다. 유연한 설계: 인터페이스를 활용하면 코드의 결합도를 낮추고, 더 유연하고 확장 가능한 설계를 할 수 있습니다. 다중 상속의 대안: C#은 클.. 2024. 8. 13. 유니티 abstract ▣ abstract 키워드는 C#에서 객체 지향 프로그래밍(OOP)의 중요한 개념인 추상화(abstraction)를 구현하는 데 사용됩니다. 추상 클래스와 추상 메서드를 정의할 때 사용되며, 구체적인 구현을 제공하지 않고, 파생 클래스(자식 클래스)에서 반드시 구현해야 하는 멤버를 선언하는 데 활용됩니다. ▣ abstract 키워드의 사용 이유 공통 인터페이스 제공: 추상 클래스는 자식 클래스들이 공통으로 가져야 할 메서드나 속성을 정의합니다. 그러나 그 구현은 자식 클래스에 따라 달라질 수 있습니다. 이를 통해 코드의 일관성과 가독성을 높일 수 있습니다. - 강제 구현: 추상 메서드를 선언하면, 이 메서드를 상속받는 모든 자식 클래스는 반드시 해당 메서드를 구현해야 합니다. 이를 통해 코드의 일관성을 .. 2024. 8. 13. 유니티 virtual, override ▣ 부모 타입에 객체에 Dog를 참조하여도 부모메소드가 호출됩니다. ▣ virtual과 override 키워드는 C#에서 상속 관계를 활용할 때 주로 사용되는 키워드입니다. 이들은 부모 클래스와 자식 클래스 간의 메서드 재정의(Overriding) 작업에 중요한 역할을 합니다. ▣ virtual 키워드 정의: 부모 클래스에서 메서드나 속성을 정의할 때, 해당 메서드나 속성을 자식 클래스에서 재정의할 수 있도록 허용하는 키워드입니다. 언제 사용되는가: 부모 클래스에서 정의된 메서드가 자식 클래스에서 재정의(override)될 가능성이 있는 경우 사용합니다.▣ override 키워드 정의: 자식 클래스에서 부모 클래스의 virtual로 선언된 메서드나 속성을 재정의할 때 사용하는 키워드입니다. 언.. 2024. 8. 13. 유니티 base 키워드 ▣ base 키워드는 C#에서 객체 지향 프로그래밍의 상속(inheritance) 개념을 활용할 때 주로 사용됩니다.base 키워드는 부모 클래스(또는 기본 클래스)의 멤버(필드, 메서드, 속성 등)에 접근할 수 있도록 해줍니다.이를 통해 자식 클래스에서 부모 클래스의 기능을 확장하거나, 부모 클래스의 기능을 재사용할 수 있습니다.그리고 부모클래스를 상속해야합니다. https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/base base 키워드 - C# referenceC#의 파생 클래스 내에서 기본 클래스의 멤버에 액세스하는 데 사용되는 base 키워드에 대해 알아봅니다.learn.microsoft.com 2024. 8. 13. 유니티 예외 처리 ▣ 구체적인 예외 클래스 FormatException 문자열을 숫자나 날짜 등 특정 형식으로 변환할 때 형식이 맞지 않을 경우 발생합니다. 예시: int.Parse("abc"); IndexOutOfRangeException 배열이나 컬렉션의 인덱스가 범위를 벗어날 때 발생합니다. 예시: int[] array = new int[5]; int value = array[10]; NullReferenceException 객체가 null 참조일 때 해당 객체의 멤버에 접근하려 할 때 발생합니다. 예시: object obj = null; obj.ToString(); InvalidOperationException 메서드 호출이 객체의 현재 상태와 적합하지 않을 때 발생합니다. 예시: IEnumerator enumer.. 2024. 8. 8. 유니티 메소드 ▣ ref 키워드는 변수가 메서드에 전달되기 전에 반드시 초기화되어 있어야 합니다. 메서드 내에서 이 변수의 값을 변경하면, 호출자에게도 변경된 값이 전달됩니다. ▣ out 키워드는 변수가 메서드에 전달될 때 초기화될 필요가 없습니다. 메서드 내에서 이 변수를 반드시 초기화해야 하며, 호출자는 이 초기화된 값을 사용할 수 있습니다. ▣ 가변매개변수는 가변으로 변수를 배열에 받아오는 형식을 뜻합니다. ▣ 명명된 변수를 사용할 때 맨 앞에 있는 매개변수가 Default로 지정되어 있어야 뒤에 있는 값을 명명된 변수로 사용가능합니다. https://docs.unity3d.com/ScriptReference/ Unity - Scripting API:Welcome to the Unity Scripting.. 2024. 8. 8. 유니티 TileMap https://arks.itch.io/dino-characters Dino Character Sprites by Arks💢4 Colorful and simple Dino Charactersarks.itch.io https://bagong-games.itch.io/cozy-island-tileset Hana Caraka - Cozy Island Topdown Tileset by Bagong GamesComplete 16x16 tileset for your top down gamesbagong-games.itch.io https://docs.unity3d.com/kr/2023.2/Manual/class-Tilemap.html Tilemap 컴포넌트 레퍼런스 - Unity 매뉴얼Tilemap 컴포넌트는.. 2024. 7. 25. 유니티 마우스 위치로 총알 발사 ▣ Player 오브젝트에 Gun 오브젝트를 추가하고 Sprite Renderer와 GunManager라는 스크립트를 추가합니다. ▣ 그리고 Gun안에 BulletPos라는 이름에 오브젝트를 상속하고 총알이 발사되는 위치로 이동합니다. ▣ GunManager 스크립트로 가서 메인카메라, 마우스위치, 총알프리팹, 총알 나가는 위치, 총 쏘는 여부를 나타내는 변수, 시간, 총 쏘는 딜레이타임변수를 각각 선언합니다. 그리고 Start() 함수에서 mainCamera라는 대입 합니다. ▣ 그리고 화면공간에 마우스 위치를 가져오는 코드, 방향을 구하는 코드, 수평축으로부터 한 점까지 각도를 구하는 함수를 각각 작성하고 총 회전값에 대입합니다. 딜레이 시간에 따라 총알이 복제되는 코드까지 완성합니다. .. 2024. 7. 11. 유니티 애니메이션 스프라이트 ▣ 애니메이션 에셋을 가져오고 스프라이트를 선택한 다음 Sprite Mode와 Filter Mode를 지정하고 Sprite Editor을 선택합니다. ▣ Silce메뉴를 선택하고 Type을 Automatic을 선택한 다음 Slice로 자르기를 진행합니다. 스프라이트 한 개를 선택하여 Pivot 중심을 변경할 수도 있고 스프라이트 자르는 부분을 직접 조절도 할 수 있습니다. ▣ 오른쪽마우스를 클릭하여 Create에서 Animation에 Animation과 Animator Controller를 생성합니다. ▣ Scene에 Player오브젝트를 생성하고 Animator Component를 추가한 다음 해당 애니메이션에 넣어 준 다음에 직접 프레임 별로 스프라이트를 넣어 애니메이션을 제작하고 추가할 .. 2024. 7. 10. 유니티 night skybox https://docs.unity3d.com/kr/2018.4/Manual/class-Skybox.html 스카이박스 - Unity 매뉴얼스카이박스(Skyboxes) 는 전체 씬을 둘러싸는 래퍼로 지오메트리 너머의 월드가 어떻게 생겼는지를 보여줍니다.docs.unity3d.com https://assetstore.unity.com/packages/2d/textures-materials/sky/urban-night-sky-134468 Urban Night Sky | 2D 하늘 | Unity Asset StoreElevate your workflow with the Urban Night Sky asset from Kendall Weaver. Browse more 2D 텍스처 및 소재 on the Unity .. 2024. 1. 21. 유니티 ai NavMeshAgent ▣ 먼저 Packages에서 AI Navigation를 추가합니다. ▣ Zombie 오브젝트에 Nav Mesh Agent Component 추가합니다. ▣ Nav Mesh Agent 컴포넌트는 Unity에서 AI 캐릭터의 경로 탐색을 담당하는 주요 컴포넌트입니다. 이 컴포넌트는 NavMesh(내비게이션 메시)를 기반으로 캐릭터가 장애물을 피하면서 목적지까지 이동할 수 있게 도와줍니다. 주로 적 AI, NPC, 유닛 등의 경로 탐색을 구현할 때 사용됩니다. ▣ Nav Mesh Agent 개념 설명 Nav Mesh Agent는 미리 설정된 NavMesh 상에서 이동하며, 다음과 같은 기능을 제공합니다: 목적지 설정: NavMesh 상의 목표 지점까지 이동합니다. 장애물 피하기: 경로 상에 있는 장애물을.. 2024. 1. 20. 유니티 배경음악, 레벨유지 ▣ 빈오브젝트를 생성하고 SoundManager라는 이름으로 지정하고 Audio Source Component를 두 개를 추가합니다. 배경음악, 효과음을 따로 플레이하여 관리하기 위함입니다. https://docs.unity3d.com/kr/2020.3/Manual/class-AudioSource.html 오디오 소스 - Unity 매뉴얼 오디오 소스(Audio Source) 는 씬에서 오디오 클립을 재생합니다. 이 클립은 오디오 리스너 또는 오디오 믹서를 통해 재생 가능합니다. 오디오 소스는 모든 종류의 오디오 클립을 재생할 수 있으며, docs.unity3d.com ▣ SoundManager 스크립트에 먼저 SounManager를 instace 싱글톤을 시켜서 모두가 접근할 수 있게 코드를 작성하고 .. 2024. 1. 19. 유니티 raycast, 총알효과 ▣ 레이케스트 장면의 모든 충돌체에 대해 지점에서 origin방향으로 direction길이의 광선을 투사합니다. maxDistance 충돌 생성에 관심이 없는 충돌체를 필터링하기 위해 선택적으로 LayerMask를 제공할 수 있습니다. 지정하면 queryTriggerInteraction트리거 충돌체가 적중을 생성하는지 여부 또는 전역 Physics.queriesHitTriggers 설정을 사용할지 여부를 제어할 수 있습니다. ▣ public static bool Raycast ( Vector3 원점, Vector3방향, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryT.. 2024. 1. 19. 유니티 3d ui ▣ 먼저 Canvas를 생성합니다. Canvas Render Mode를 World Space으로 지정합니다. https://docs.unity3d.com/kr/530/Manual/UICanvas.html 캔버스 - Unity 매뉴얼 모든 UI 요소는 Canvas 안에 위치해야 합니다. 캔버스는 Canvas 컴포넌트가 있는 게임 오브젝트이며 모든 UI 요소는 반드시 어떤 캔버스의 자식이어야 합니다. docs.unity3d.com ▣ 월드 공간(World Space) 이 렌더 모드에서는 캔버스는 씬에 있는 다른 오브젝트처럼 동작합니다. 캔버스의 크기는 사각 트랜스폼을 사용하여 수동으로 설정할 수 있으며 UI 요소는 3D 배치에 기반하여 씬의 다른 오브젝트의 앞 또는 뒤에 렌더링 됩니다. 이 방식은 월드의 일.. 2024. 1. 18. 유니티 뛰는 애니메이션 ▣ 플레이어 애니메이션에 Parameters를 Float 형식으로 추가합니다. ▣ Base Layer에서 From New Blend Tree를 추가합니다. ▣ Blend Tree 이름을 지정하고 기본애니메이션과 연결합니다. Parameters는 아까 생성한 Run으로 지정하고 기본값은 0으로 합니다. ▣ Blend Tree에 두 개의 애니메이션을 추가합니다. ▣ 플레이어 스크립트로 들어가서 움직임 입력을 받은 코드에 Abs를 이용해서 앞뒤좌우 상관없이 모두 다 애니메이션에 값을 양수 1로 할 수 있게 Abs 함수를 사용했습니다. https://docs.unity3d.com/kr/530/ScriptReference/Mathf.Abs.html Mathf-Abs - Unity 스크립팅 API Returns t.. 2024. 1. 18. 유니티 crosshair ▣ 먼저 UI에 Panel를 생성합니다. Panel Component에 Image는 삭제하고 Anchors로 Midlle center로 정렬합니다. 그리고 크기 Width, Height는 100으로 지정합니다. ▣ UI Image를 Panel안에 상속하여 생성하고 각각 위치에 맞게 정렬한 다음에 크기를 지정합니다. ▣ 그리고 Panel 오브젝트에 스크립트를 추가합니다. ▣ RectTransfrom crossHair; 를 통해서 Panel에 크기를 조절하기 위함입니다. ▣ WeaponManager코드는 총을 쏘는 스크립트를 가져오기 위함입니다. ▣ 총을 쏘면 Mathf.Lerp 함수를 이용해서 서서히 크기를 조절합니다. https://docs.unity3d.com/kr/530/ScriptReference/.. 2024. 1. 18. 유니티 총 파티클효과 ▣ ParticleSystem 을 가져와서 Play()함수로 재생이 가능합니다. https://docs.unity3d.com/kr/2022.3/Manual/class-ParticleSystem.html 파티클 시스템 - Unity 매뉴얼 Particle System 컴포넌트는 씬 안에 다수의 작은 2D 이미지를 생성하고 애니메이션하여 액체, 구름 및 불꽃 같은 유체 엔티티를 시뮬레이션합니다. 파티클 시스템과 그 용도에 대한 전체 개요는 파 docs.unity3d.com 2024. 1. 17. 유니티 카메라쉐이크 ▣ 코루틴 호출 시 -> 카메라 오지지 널 위치 저장 -> whlie문을 이용해서 흔들기는 시간까지 반복 -> 랜덤으로 흔들기 강도만큼 곱하기 저장 -> 카메라 위치 x, y, z 각각 랜덤으로 만든 값을 더하기 하여 흔들기 -> 흔들기가 끝나면 다시 원래 위치로 초기화 ▣ 발사버튼을 클릭하면 카메라쉐이크 코루틴을 호출합니다. https://docs.unity3d.com/kr/2022.3/Manual/Coroutines.html 코루틴 - Unity 매뉴얼 코루틴을 사용하면 작업을 다수의 프레임에 분산할 수 있습니다. Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드입니 docs.unity3d.com 2024. 1. 17. 유니티 플레이어 이동, 회전(Defalit input system, new input system) ▣ 기존 입력시스템으로 이동과 마우스 회전하는 코드를 작성하겠습니다.Project Settings에 Input Manager에 Axes 값을 확인합니다. ▣ input.GetAxis() 함수를 이용한 플레이어 이동 코드입니다. transform.right, transform.forward를 곱한 이유는 플레이어 방향으로 이동하기 위함입니다.Character Controller를 이용한 이동하는 코드입니다. ▣ 마우스 회전도 Input.GetAxis() 함수를 이용해서 값을 받아왔고 Rotation에 X 값이 위아래 회전, Y값이 오른쪽 왼쪽 회전이기 때문에 위에 코드를 이런 식으로 진행했습니다. https://docs.unity3d.com/kr/530/ScriptReference/Mathf.Clam.. 2024. 1. 16. 유니티 GetAxis 오류 해결방법 ▣ Project Settings -> Player -> Configuration -> Active Input Handing* 을 Both으로 설정하면 됩니다. 2024. 1. 16. 이전 1 2 3 4 5 6 다음