본문 바로가기

전체 글128

02.22(TIL-Unity) 구현한 기능: 라이트 모드 조절 목적: 기본 시야와 야간 시야 사이에서 자연스러운 전환을 가능하게 함으로써, 플레이어가 게임 내 다양한 시각적 환경에서 불편함 없이 경험할 수 있도록 하기 위함입니다. 이를 통해 게임의 실제감을 높이고, 플레이어에게 더 몰입감 있는 환경을 제공하려는 목적입니다. 사용한 스크립트: NightVision 구현 코드 (간단한 코드 로직): 더보기 if (isNightVisionActive) { // 나이트 비전이 활성화되었을 경우 Render Mode를 Auto로 설정 light.renderMode = LightRenderMode.Auto; } else { // 나이트 비전이 비활성화되었을 경우 Render Mode를 ForcePixel로 설정 light.renderMode =.. 2024. 2. 22.
02.21 (TIL-Unity) 유니티 라이트 컴포넌트에 대한 이해 유니티의 라이트 컴포넌트는 장면에 조명을 추가하고, 그 특성을 조절하여 게임이나 애플리케이션에 생동감과 분위기를 부여하는 데 핵심적인 역할을 합니다. 다양한 종류의 라이트와 그 설정을 이해하는 것은 실감 나는 시각적 경험을 창출하는 데 중요합니다. 1. General 섹션 Type: 조명의 형태를 결정합니다. Directional: 무한한 거리에서 오는 평행한 빛으로, 일관된 방향을 가지며 태양과 같은 효과를 낼 때 사용합니다. Point: 하나의 점에서 모든 방향으로 빛을 방출합니다. 전구나 촛불 같은 광원을 모사할 때 적합합니다. Spot: 한 점에서 특정 방향으로 빛이 집중되어 나갑니다. 스포트라이트 효과를 낼 때 사용됩니다. Area: 넓은 면적에서 빛을 방출하.. 2024. 2. 21.
02.20 (TIL-Unity) 구현한 기능: 인터랙티브 키패드와 트리거 기반 오브젝트 활성화/비활성화 시스템 목적: 이 시스템의 주요 목적은 플레이어가 특정 퍼즐을 해결하고, 그 결과에 따라 게임 환경 내에서 특정 오브젝트를 활성화 또는 비활성화함으로써, 게임 진행에 필요한 시각적 힌트와 방향을 제공하는 것입니다. 이는 플레이어의 몰입감을 증가시키고, 게임 내에서의 상호작용을 풍부하게 만듭니다. 사용한 스크립트 : SW_KeypadEventUI 구현 코드 (간단한 코드 로직): 더보기 public class SW_KeypadEventUI : MonoBehaviour { [SerializeField] private List objectsToToggle; // 활성화/비활성화할 오브젝트 목록 public void ActivateObjec.. 2024. 2. 20.
02.19 (TIL) MVC 모델 MVC(Model-View-Controller) 모델은 소프트웨어 설계 패턴 중 하나로, 애플리케이션을 세 가지 주요 구성 요소로 분리하여 관리합니다. Model: 데이터와 비즈니스 로직을 관리합니다. 애플리케이션의 정보, 데이터의 조작과 처리 로직을 담당하며, 상태 변경 시 View에 통보합니다. View: 사용자 인터페이스(UI) 요소를 담당하며, 사용자에게 데이터를 표시합니다. Model로부터 데이터를 받아 사용자에게 보여주는 역할을 합니다. Controller: 사용자의 입력을 받고 처리하는 컴포넌트입니다. 사용자의 액션에 따라 Model을 업데이트하고, 그 결과를 View에 반영하도록 지시합니다. MVC 모델은 애플리케이션의 구조를 명확히 분리함으로써, 각 부분의 재사용성과 확장성을.. 2024. 2. 19.
02.16 (TIL-Unity) 구현한 기능: 문 상태 제어 및 신호 활성화 목적: 이 기능의 주요 목적은 특정 조건이 만족될 때 게임 내의 문을 자동으로 열거나 닫는 동작을 제어하고, 이를 통해 플레이어에게 시각적 또는 기능적 신호를 제공하는 것입니다. 사용한 스크립트: SW_LightHint, DoorController 더보기 // SW_LightHint 스크립트 내 CheckDoorsAndActivate 메서드 private void CheckDoorsAndActivate() { bool allDoorsOpen = doorOpen.All(door => door.isOpen); bool allDoorsClose = doorClose.All(door => !door.isOpen); if (allDoorsOpen && allDoorsC.. 2024. 2. 16.
02.15 (TIL) 인터페이스와 추상클래스의 차이 인터페이스(Interface): 모든 메소드가 추상 메소드(구현부가 없는 메소드)로만 이루어져 있으며, 다중 상속이 가능합니다. 인터페이스는 특정 기능을 구현하기 위한 메소드의 시그니처(형태)만을 정의합니다. 클래스가 인터페이스를 구현(implement)할 때는 인터페이스에 정의된 모든 메소드를 구현해야 합니다. 추상클래스(Abstract Class): 하나 이상의 추상 메소드를 포함할 수 있으며, 구체적인 메소드(구현부가 있는 메소드)도 포함할 수 있습니다. 추상 클래스는 다른 클래스가 상속(extend)할 수 있으며, 추상 클래스를 상속하는 자식 클래스는 부모 클래스의 추상 메소드를 모두 구현해야 합니다. 추상 클래스를 사용하면 기본적인 구현을 제공하면서도 일부 메소드는.. 2024. 2. 15.
02.14 (TIL-Unity) 구현한 기능: 아이템 분해 기능 목적: 아이템 분해 기능은 플레이어가 인벤토리 내의 아이템을 분해하여 새로운 자원이나 다른 아이템으로 변환할 수 있게 하는 기능입니다. 이를 통해 게임 내에서 아이템 관리의 유연성을 높이고, 플레이어에게 다양한 전략적 선택지를 제공합니다. 사용한 스크립트: SW_ItemDismantle, SW_Inventory 구현 코드 (간단한 코드 로직): 더보기 if (selectedItem != null && ( selectedItem.item.type == ItemType.Unique || selectedIte selectedItem.item.type == ItemType.Normal)) { // 분해 스크립트 가져오기 및 분해 실행 var dismantleScript = sel.. 2024. 2. 14.
02.13 (TIL) 상속(Inheritance)과 프로젝트 적용 예 상속이란: 상속은 객체지향 프로그래밍에서 한 클래스(부모 클래스)의 속성과 메소드를 다른 클래스(자식 클래스)가 물려받는 메커니즘입니다. 이를 통해 코드 재사용성을 높이고, 유지보수성을 개선하며, 계층적인 클래스 구조를 구성할 수 있습니다. 프로젝트 적용 예: 예를 들어, 게임 개발 프로젝트에서 여러 유형의 캐릭터(예: 전사, 마법사, 궁수)가 공통적인 속성(체력, 마나, 위치 등)과 행동(이동하기, 공격하기)을 가지고 있다고 가정. 이 경우, '캐릭터'라는 기본 클래스를 정의하고, 이를 상속받아 각 캐릭터 유형별로 특화된 클래스(예: '전사', '마법사', '궁수')를 구현할 수 있습니다. 이렇게 함으로써 공통적인 코드를 재사용하고 각 캐릭터 유형의 특성.. 2024. 2. 13.
02.08 (TIL-Unity) 구현한 기능: 빔 클리어 목적: 게임 내에서 특정 퍼즐 또는 임무를 완료한 후 빔 관련 컴포넌트와 오브젝트를 비활성화하거나 제거하여, 게임 플레이를 다음 단계로 진행시키고 성능 최적화를 달성하는 것. 사용한 스크립트: SW_BeamClear 구현 코드 로직: 더보기 // 빔 관련 컴포넌트 비활성화 및 태그, 레이어 변경 beamScript.enabled = false; beamScript.gameObject.layer = LayerMask.NameToLayer("Default"); beamScript.gameObject.tag = "Untagged"; 사용 이유: 플레이어가 특정 임무를 완료한 후에는 더 이상 빔을 사용할 필요가 없으며, 이를 통해 게임의 진행을 명확하게 하고, 불필요한 계산 및 인터랙션.. 2024. 2. 8.
02.07 (TIL-Unity) 구현한 기능: 빔, 빔 컬러, 빔 힌트 1. 빔 기능 목적: 플레이어가 특정 오브젝트와 상호작용하여 빛을 발사할 수 있게 함. 사용한 스크립트: SW_Beam 간단 구현 코드 로직: 빔의 활성화/비활성화를 토글하는 기능. 더보기 // 빔 활성화/비활성화 public void OnInteract() { beamLight.enabled = !beamLight.enabled; isBeamActive = !isBeamActive; // 상태 토글 } 사용 이유: 게임 내에서 플레이어에게 탐험 요소를 제공하고 퍼즐 해결에 필요한 도구로 사용. 2. 빔 컬러 변경 목적: 플레이어가 상호작용을 통해 빔의 색상을 변경할 수 있게 함. 사용한 스크립트: SW_ColorSwitch 간단 구현 코드 로직: 상호작용 시 빔의.. 2024. 2. 7.