본문 바로가기

unity95

유니티 PauseMenu ▣ 코드 설명 Time.timeScale: 게임의 시간 흐름을 조정하는 변수로, 0으로 설정하면 게임이 멈추고, 1로 설정하면 정상 속도로 돌아옵니다. pauseMenuUI: 게임 오브젝트로 설정된 메뉴 UI를 나타냅니다. 이 UI는 Canvas 안에 있는 메뉴 버튼들로 구성될 수 있으며, SetActive() 메서드를 사용하여 활성화하거나 비활성화할 수 있습니다. isPaused: 게임이 일시 정지 상태인지 확인하기 위한 불리언 변수입니다. Input.GetKeyDown(KeyCode.Escape): Esc 키가 눌리면 일시 정지 또는 재개 동작을 실행합니다. Resume(): 게임을 다시 시작하는 함수입니다. pauseMenuUI를 비활성화하고 Time.timeScale을 1로 설정해 시간 흐름을 정.. 2024. 9. 18.
유니티 Loading Scene ▣ 로딩씬을 생성하고 LodingSlider를 생성하고 제작합니다.그리고 Build Settings에서 씬 3개를 추가합니다.   ▣  SceneManager.LoadSceneAsync: 비동기적으로 씬을 로드하는 함수. AsyncOperation.allowSceneActivation: 로딩이 완료되었을 때 씬을 자동으로 활성화할지 여부를 설정하는 속성. Slider.value: Slider UI의 현재 값을 설정하거나 가져오는 속성. SceneManager.UnloadSceneAsync: 비동기적으로 씬을 언로드하는 함수. ▣ FindLoadingSliderInScene() 역할: 로딩 씬에서 LoadingSlider라는 이름을 가진 Slider UI 오브젝트를 찾고, 이를 loadingSlider 변.. 2024. 9. 18.
유니티 GameSettingsUIManager ▣ 먼저 Canvas를 생성하고 Button 및 Text를 활용하여 GameSettingUI를 제작합니다.    ▣ Canvas Scaler의 각 필드 설명 UI Scale Mode (UI 스케일 모드):UI의 스케일 방식에 대한 설정입니다. 해상도에 따라 UI가 어떻게 조정될지를 결정합니다. Constant Pixel Size: UI 요소의 크기를 픽셀 크기로 고정합니다. Scale with Screen Size: 화면 크기에 맞춰 UI 요소의 크기를 스케일 합니다. Constant Physical Size: 물리적 크기에 따라 UI 요소의 크기를 조정합니다.  ▣ Reference Resolution (기준 해상도):Scale with Screen Size 모드에서 사용됩니다. 기준 해상도를 설정하면.. 2024. 9. 17.
유니티 Camera Shake ▣ 스크립트 설명 Update: Input.GetMouseButtonDown(0)을 사용하여 마우스 왼쪽 버튼을 클릭했을 때 카메라 흔들림을 트리거합니다. Shake: 카메라의 위치를 흔들리게 만드는 코루틴입니다.Camera.main을 사용해 메인 카메라의 위치를 흔들고, 흔들림이 끝난 후 원래 위치로 복구합니다. shakeDuration과 shakeMagnitude: 각각 흔들림의 지속 시간과 강도를 조절하는 변수입니다. https://docs.unity3d.com/ScriptReference/Camera-main.html Unity - Scripting API: Camera.mainIf there is no enabled Camera component with the "MainCamera" tag, .. 2024. 9. 15.
유니티 Single RayCast, Multi RayCast ▣ Single Raycast: 하나의 광선을 발사하여 충돌한 첫 번째 물체를 감지합니다.일반적으로 특정 물체와의 충돌 여부만 확인할 때 사용됩니다. ▣ Multi Raycast: 여러 물체와 충돌할 수 있는 광선을 발사하여 광선과 충돌한 모든 물체를 감지합니다. 여러 개의 충돌 결과를 처리해야 할 때 유용합니다. https://docs.unity3d.com/ScriptReference/Physics.Raycast.html Unity - Scripting API: Physics.RaycastDescription Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the S.. 2024. 9. 14.
유니티 Animator, Animation, Blend Tree https://makerejoicegames.tistory.com/521 유니티 애니메이션 스프라이트▣ 애니메이션 에셋을 가져오고 스프라이트를 선택한 다음 Sprite Mode와 Filter Mode를 지정하고 Sprite Editor을 선택합니다.   ▣ Silce메뉴를 선택하고 Type을 Automatic을 선택한 다음 Slice로 자르기를 진makerejoicegames.tistory.com  ▣ Animation (애니메이션) Animation은 게임 오브젝트의 동작을 프레임 단위로 정의한 것입니다. 애니메이션 클립(Animation Clip)을 통해 오브젝트가 어떤 방식으로 움직이는지, 변화하는지를 설정할 수 있습니다. 예를 들어, 캐릭터가 걷거나 뛰는 동작, 또는 문이 열리고 닫히는 애니메이션.. 2024. 9. 14.
유니티 오브젝트 스크롤링 ▣ 변수 설명 objectPrefab: 생성할 오브젝트의 프리팹을 Inspector에서 연결할 수 있는 변수입니다. poolSize: 오브젝트 풀의 크기를 설정합니다. 한 번에 최대 몇 개의 오브젝트를 풀에 저장할지 결정합니다. spawnXPosition: 오브젝트가 생성될 X 좌표를 설정하는 값입니다. 예를 들어 오른쪽에서 생성되도록 X 좌표를 설정할 수 있습니다. minYPosition / maxYPosition: 오브젝트가 생성될 때 Y 좌표의 범위를 설정하는 값입니다. Y 좌표는 이 범위 내에서 랜덤 하게 결정됩니다. leftBound: 오브젝트가 왼쪽으로 이동할 때 화면의 왼쪽 끝에 닿는 X 좌표입니다. 이 좌표를 넘어가면 오브젝트는 비활성화됩니다. spawnInterval: 오브젝트가 생성되는.. 2024. 9. 13.
유니티 2D Collider ▣ OnCollisionEnter2D:언제 호출되는가: 오브젝트가 다른 오브젝트와 처음 충돌할 때. 사용 목적: 충돌이 발생했을 때 어떤 논리를 실행해야 할 때 사용. 예를 들어, 바닥에 닿으면 플레이어를 바닥에 고정하는 용도로 사용. ▣ OnCollisionStay2D:언제 호출되는가: 오브젝트가 다른 오브젝트와 계속해서 충돌 중일 때, 매 프레임마다 호출됨. 사용 목적: 충돌 상태가 지속되는 동안 특정 동작을 수행해야 할 때 사용. 예를 들어, 오브젝트가 지속적으로 충돌하고 있는지 확인하는 용도로 사용. ▣ OnCollisionExit2D:언제 호출되는가: 오브젝트가 다른 오브젝트와의 충돌에서 벗어났을 때. 사용 목적: 충돌이 끝났을 때 실행할 동작이 필요할 때 사용. 예를 들어, 바닥에서 떨어지면 .. 2024. 9. 13.
유니티 2D 배경 스크롤링 ▣ 코드 설명 배경 배열 (public GameObject[] backgrounds):이 배열은 배경 오브젝트 3개를 참조합니다. backgrounds[0], backgrounds[1], backgrounds[2]와 같은 방식으로 접근하며, 각각이 배경 오브젝트를 나타냅니다. Unity 에디터에서 3개의 배경 오브젝트를 이 배열에 드래그해서 할당합니다.배경 이동 속도 (public float backgroundSpeed):backgroundSpeed 변수는 배경이 왼쪽으로 이동하는 속도를 제어합니다. 값이 클수록 배경이 더 빠르게 움직입니다.배경의 가로길이 (private float backgroundWidth):backgroundWidth는 배경 오브젝트의 실제 가로 크기를 저장합니다. 배경을 배치하거.. 2024. 9. 12.
유니티 코루틴 ▣ 코드 설명 Start() 메서드: 게임이 시작되면 유니티가 자동으로 호출하는 메서드입니다. 여기서 StartCoroutine()을 사용해 코루틴을 시작합니다. MoveCharacter() 메서드: IEnumerator 타입의 코루틴입니다. while (true)를 사용해 무한히 반복됩니다. transform.Translate(Vector2.right * moveSpeed): 캐릭터를 오른쪽으로 moveSpeed만큼 이동시킵니다. yield return new WaitForSeconds(2f): 2초 동안 대기한 후, 다시 반복문이 실행됩니다. Debug.Log()로 이동 후 콘솔에 로그를 출력하여 작업이 수행되었음을 확인할 수 있습니다.   ▣ 코드 설명 jumpForce: 캐릭터가 점프할 때 적용되.. 2024. 9. 12.
유니티 2D Object Ping Pong ▣ 코드 설명: speed: 오브젝트의 이동 속도를 제어하는 변수입니다. maxDistance: 오브젝트가 이동할 최대 거리를 정의하는 변수입니다. 왼쪽과 오른쪽으로 이동하는 범위의 최댓값을 설정합니다. startPosition: 오브젝트의 시작 위치를 저장하여 기준점으로 삼습니다. direction: 오브젝트의 이동 방향을 나타내는 변수입니다. 1일 때는 오른쪽으로, -1일 때는 왼쪽으로 이동합니다. Update(): 매 프레임마다 호출되며, 현재 위치가 최대 이동 범위를 초과하면 방향을 바꿔서 오브젝트를 반대쪽으로 이동시킵니다. Time.deltaTime: 프레임 간 시간 차를 사용하여 일정한 속도로 이동할 수 있도록 보장합니다.  ▣ Invoke 사용: Invoke("ReactivateGameOve.. 2024. 9. 11.
유니티 2D 점프, 더블점프 ▣ 코드설명jumpForce: 점프 시 캐릭터가 얼마나 높이 점프할지를 결정하는 변수입니다. rb: 캐릭터의 물리적 움직임을 처리하는 Rigidbody2D 컴포넌트를 저장하기 위한 변수입니다. canDoubleJump: 캐릭터가 더블 점프를 할 수 있는지 여부를 결정하는 불리언 값입니다. 처음에는 false로 설정되며, 더블 점프를 하고 나면 false로 바뀝니다. isGrounded: 캐릭터가 땅에 있는지 여부를 확인하는 변수입니다. groundCheck: 캐릭터가 땅에 닿았는지를 확인하는 위치를 나타내는 Transform입니다. 주로 캐릭터 발 밑에 위치합니다. groundCheckRadius: 캐릭터가 땅에 닿았는지를 확인하기 위해 사용하는 원형 감지 범위의 반지름입니다. groundLayer: 땅.. 2024. 9. 10.
유니티 쿼터니언(Quaternion)과 회전 ▣ 코드 설명 Vector3 direction = target.position - transform.position;현재 오브젝트에서 목표 오브젝트까지의 방향벡터를 구합니다.Quaternion targetRotation = Quaternion.LookRotation(direction);이 방향벡터를 기준으로 회전하기 위한 쿼터니언을 만듭니다. LookRotation 함수는 주어진 방향을 바라보는 쿼터니언을 반환합니다.Quaternion.Lerp(transform.rotation, targetRotation, rotationSpeed * Time.deltaTime);현재 회전(transform.rotation)과 목표 회전(targetRotation) 사이를 부드럽게 보간하여 회전합니다. Lerp 함수는 .. 2024. 9. 9.
유니티 싱글톤 ▣ 코드 설명 싱글톤 구현:public static Player Instance { get; private set; }로 Instance라는 싱글톤 인스턴스를 만들고, Awake에서 인스턴스가 없는 경우 현재 객체를 할당하고, 중복된 객체는 삭제합니다. 이를 통해 Player 클래스는 오직 하나의 인스턴스만 생성되며, 이 인스턴스에 전역적으로 접근할 수 있습니다.전역 접근: 다른 스크립트에서는 Player.Instance를 통해 언제든지 플레이어에 접근할 수 있습니다. 예를 들어, Enemy 클래스에서 Player.Instance.TakeDamage(10)을 호출해 플레이어에게 10만큼의 대미지를 입힐 수 있습니다. 인스턴스 관리: Awake 메서드에서 이미 Player 인스턴스가 존재할 경우 새로 생성.. 2024. 9. 8.
유니티 3D ParticleSystem ▣ ParticleManager를 사용해야 할지 고려해 볼 수 있는 상황 - 여러 파티클 시스템을 동시에 사용: 게임 내에서 다양한 파티클 시스템(예: 폭발, 스파크, 연기 등)을 여러 군데에서 사용할 때, ParticleManager가 각 파티클 시스템을 한 곳에서 관리하면 더 효율적입니다. - 파티클 시스템 최적화: 모든 파티클 시스템을 한 곳에서 관리함으로써 메모리 관리, 성능 최적화, 불필요한 파티클 시스템 비활성화 등의 작업을 쉽게 처리할 수 있습니다. - 재사용 가능한 파티클 효과: 같은 파티클 효과를 여러 장소에서 재사용해야 할 때, ParticleManager를 사용하면 더 간단하게 관리하고 필요할 때마다 쉽게 인스턴스화할 수 있습니다. - 코드의 가독성 및 유지보수성 향상: 파티클 시스템.. 2024. 9. 8.
유니티 제네릭(Generic) ▣ 는 C#에서 제네릭(Generic)을 사용할 때 나타나는 구문입니다.제네릭은 클래스나 메서드, 구조체 등을 정의할 때 데이터 타입을 일반화해서 사용할 수 있도록 하는 기능입니다.제네릭을 사용하면 코드의 재사용성을 높일 수 있고, 타입 안정성을 유지할 수 있습니다. ▣ C#에서 메서드나 클래스 이름 뒤에 를 붙이고, 그 안에 타입을 지정하는 방식으로 제네릭을 활용합니다. Unity에서 자주 쓰이는 GetComponent()에서  안에 들어가는 T가 바로 타입 매개변수입니다. 제네릭은 다양한 타입을 지원하기 때문에, 유연하게 여러 타입을 처리할 수 있습니다. ▣ 제네릭의 기본 개념  안에 들어가는 것은 타입 매개변수로, 특정 타입을 의미합니다. 제네릭을 사용하면 다양한 타입에 대해 동일한 로직을 처리할 .. 2024. 9. 7.
유니티 SoundManager ▣ 설명: 싱글톤 패턴: SoundManager 클래스는 싱글톤 패턴을 사용하여 하나의 인스턴스만 유지하고, 이를 통해 어디서든 접근할 수 있도록 했습니다. AudioSource 컴포넌트: bgmSource는 배경음악을 재생할 때 사용하고, sfxSource는 효과음을 재생할 때 사용합니다. 배경음 및 효과음 재생: PlayBGM()과 PlaySFX() 함수는 지정된 인덱스의 사운드를 재생합니다. 배경음/효과음 멈춤: StopBGM()과 StopSFX() 함수로 각각 배경음과 효과음을 멈출 수 있습니다.Dictionary 사용: Dictionary을 사용하여 배경음과 효과음을 이름으로 관리할 수 있게 했습니다. 이를 통해 사운드를 이름으로 검색하고 재생할 수 있습니다. NamedAudioClip 구조체:.. 2024. 9. 6.
유니티 2D AI 추적시스템 ▣ 코드 설명 player: 플레이어 캐릭터의 위치를 알아내기 위해 Transform을 참조합니다. Unity에서 Transform은 객체의 위치, 회전, 크기를 나타냅니다.moveSpeed: 적 캐릭터가 플레이어를 따라갈 때의 속도입니다. 이 값을 조절하면 적의 이동 속도가 변경됩니다. detectionRange: 적이 플레이어를 감지할 수 있는 범위를 설정하는 변수입니다. 이 범위 안에 플레이어가 들어오면 적이 추적을 시작합니다.Update(): Unity에서 매 프레임마다 호출되는 메서드로, AI가 매 순간 플레이어의 위치를 추적하고 반응하는 로직을 여기에 작성합니다.Vector2.Distance: 적과 플레이어 사이의 거리를 계산하는 데 사용됩니다. detectionRange와 비교하여 플레이어가.. 2024. 9. 5.
유니티 Array, List, Dic , Call by Reference, Call by Value ▣설명: 동일한 타입의 데이터가 연속적으로 메모리에 저장되는 자료구조입니다. 특징: 고정 크기: 배열의 크기는 선언 시 고정됩니다. 빠른 접근: 인덱스를 통해 빠르게 접근할 수 있습니다. 단점: 크기가 고정되어 있어 유연성이 떨어집니다. 예시: int[] numbers = new int[5]; https://learn.microsoft.com/en-us/dotnet/api/system.array?view=net-8.0 Array Class (System)Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the base class for all arrays in the common lan.. 2024. 8. 31.
유니티 Delegate ▣ 델리게이트(Delegate)는 C#에서 매우 중요한 개념으로, 특정 메서드를 참조할 수 있는 형식을 의미합니다. 이를 통해 메서드를 변수처럼 다룰 수 있으며, 메서드를 매개변수로 전달하거나, 런타임에 어떤 메서드를 호출할지 동적으로 결정할 수 있습니다. ▣  델리게이트의 사용 목적: 동작의 캡슐화: 델리게이트를 사용하면 함수 자체를 변수처럼 전달할 수 있어, 실행할 코드의 일부를 런타임에 결정할 수 있습니다. 이벤트 처리: 이벤트 시스템에서 자주 사용됩니다. 예를 들어 버튼 클릭 시 호출할 메서드를 델리게이트로 지정할 수 있습니다. 콜백 메서드: 비동기 작업이 끝났을 때 호출할 메서드를 지정하는 콜백에 사용됩니다. ▣ 델리게이트의 사용 상황: 코드의 재사용성을 높이기 위해 여러 객체가 동일한 작업을 .. 2024. 8. 31.
유니티 Lambda ▣ 람다식(Lambda Expression)이란? 람다식은 익명 함수를 생성하는 간결한 방법입니다.  C#에서 메서드를 정의하지 않고도 함수나 연산을 간단하게 표현할 수 있습니다.  람다식은 주로 델리게이트(Delegate) 또는 이벤트(Event)와 함께 사용됩니다. ▣ 람다식의 기본 형태는 다음과 같습니다:(매개변수) => 식;  ▣ 람다식의 기본 구조 매개변수: 메서드처럼 여러 개의 매개변수를 가질 수 있습니다. 매개변수가 하나일 경우 괄호 ()를 생략할 수 있습니다. 화살표 연산자 (=>): 매개변수와 본문을 구분합니다. 본문: 단일 식일 수 있으며, 이 식의 결과가 반환됩니다. 여러 줄의 코드가 필요한 경우 중괄호 {}를 사용하고, 명시적으로 return 키워드를 사용해야 합니다. ▣ Func는.. 2024. 8. 28.