목록Dev. Study Note/Unity (49)
Priv's Blog
1. foreach( ) 문 foreach( ) 문은 배열이나 리스트, 딕셔너리 등과 같은 타입의 인스턴스를 매개변수로 받아서 각 요소들을 반복적으로 반환하는 편리한 반복문입니다. var fibNumbers = new List { 0, 1, 1, 2, 3, 5, 8, 13 }; foreach (int element in fibNumbers) { Console.Write($"{element} "); } // Output: // 0 1 1 2 3 5 8 13 하지만 foreach( ) 문은 enumerator를 사용합니다. 다른 언어에서는 iterator라는 단어를 사용하지만, C#에서는 enumerator라는 단어를 사용하므로 구분해 사용하겠습니다. 2. enumerator는 참조 형식(Reference ..
출처 Toggle Button State On/Off - Unity Answers answers.unity.com 1. Toggle은 클릭될 때마다 isOn 변수 값을 바꿉니다. 위 사진은 클릭된 Toggle의 Inspector 창을 찍은 것입니다. 보시다시피 isOn 변수에 true 값이 들어가 있죠. Unity에서 사용하는 Toggle 오브젝트들은 위 사진처럼 클릭이 감지되면 Toggle 컴포넌트의 isOn 변수의 값을 바꿔서 기록합니다. 2. 코드 상에서 isOn 변수 값을 직접 바꾸는 건 위험합니다. 스크립트 상에서도 위의 isOn 변수의 값을 아래와 같이 직접 변경할 수 있습니다. [SerializeField] private Toggle screenSizeNative; screenSizeNati..
1. 환경광(Environment Lighting) 게임 상에 기본적으로 깔리는 광원. 모든 게임 오브젝트에 적용되며, 모든 방향에서 동일한 세기의 빛이 들어온다. 명암, 그림자를 만들지 않는 광원이다. 게임의 전체적인 색 분위기를 결정할 수 있다. 2. 글로벌 일루미네이션(Global Illumination) 물체의 표면에 직접 닿는 빛과 다른 물체의 표면에서 반사되어 들어오는 간접광까지 표현한다. GI라고 줄여서 표현하기도 한다. 성능을 매우 많이 요구하기 때문에 실시간 GI는 처리하기가 버겁다. Unity 엔진에서는 실시간 글로벌 일루미네이션, 베이크 된 글로벌 일루미네이션을 제공한다. 2가지를 함께 사용하거나 1가지만 사용할 수도 있다. 실시간 글로벌 일루미네이션, 베이크 된 글로벌 일루미네이션 ..
1. IEnumerator 메서드는 실행할 때마다 참조값이 바뀐다. public void StartWeaponAction(int type = 0) { if (type == 0) { // 좌측 마우스 버튼 클릭; 사격 if (this.weaponSetting.isAuto == true) { StartCoroutine(OnAttackLoop()); } else { OnAttack(); } } } public void StopWeaponAction(int type = 0) { if (type == 0) { StopCoroutine(OnAttackLoop()); } } private void OnAttack() { if (Time.time - this.lastAttackTime > this.weaponSetti..
1. 개요 유독 VSC는 골치를 썩이는 일이 많은 것 같다. Unity에서 VSC를 연동할 때, 자동 완성이 작동하지 않을 경우가 잦은데, 해결법을 알아본다. 2. Could not locate MSBuild instance to register with OmniSharp. 2022년 5월 이후부터는 Visual Studio Build Tools 2022를 통해 .net 데스크톱 빌드 도구를 설치해주어야 한다. 아래 주소를 타고 가서 빌드 도구를 설치하자. Visual Studio Tools 다운로드 - Windows, Mac, Linux용 무료 설치 Visual Studio IDE 또는 VS Code를 무료로 다운로드하세요. Windows 또는 Mac에서 Visual Studio Professional..
1. LOD LOD는 렌더링을 할 때 카메라와 오브젝트 사이의 거리를 계산하여 특정 거리 이상 멀어지면 폴리곤 수가 더 낮은 저사양 모델링으로 변경하여 자원 소모를 절약하는 기능이다. 일반적으로 3단계로 구성되며, 멀티 플레이 게임에서 상대방 플레이어와 자신의 거리가 어느 정도인지에 따라 모델링을 바꾸는 기법을 사용하면 최적화 효과를 볼 수 있다. 2. LOD Group 컴포넌트 LOD Group 컴포넌트는 카메라와 피사체의 거리에 따라 렌더링 할 메시를 결정한다. 오브젝트를 선택하고 Component - Rendering - LOD Group을 선택하면 컴포넌트를 추가할 수 있다. 추가된 컴포넌트에서 LOD 0, LOD 1, LOD2 자리에 원하는 메시를 드래그&드롭하여 연결해주면 설정이 완료된다. L..
1. Cast Shadows 오브젝트의 Inspector 창에서 Mesh Renderer 컴포넌트를 열어보면, lighting이라는 탭이 존재한다. 이 부분은 Renderer 계열의 컴포넌트에 있는 그림자 관련 속성으로, Mesh Renderer와 동일하게 Renderer 계열 컴포넌트인 Skinned Mesh Renderer에도 존재한다. Cast Shadows는 빛을 받아서 오브젝트 자신이 그림자를 생성할 것인지를 결정하는 속성이다. 게임에서 그림자는 시각적 효과에 탁월한 기능을 하지만, 엔진에 많은 부하를 주기 때문에 신중하게 설정해야 하는 부분이기도 하다. Cast Shadows에는 다음과 같이 4가지 속성 값이 존재한다. 속성 설명 Off 그림자를 생성하지 않음 On 그림자를 생성함 Two Si..
1. Time.deltaTime Unity 입문을 막 시작한 시절에 오랫동안 나를 괴롭혔던 기능 중 하나가 Time.deltaTime이다. Time.deltaTime은 이전 프레임의 시작 시각, 현재 프레임이 시작되는 시각의 차(델타)를 의미한다. 즉, 이전 프레임에서 현재 프레임으로 넘어오는 데 걸린 시간 간격을 의미한다. 아래와 같은 코드가 있다고 가정하자. private void Update() { transform.Translate(Vector3.forward * 10); } Update() 메서드 안에서 실행되고 있는 코드이므로, 1 프레임 단위로 10 유닛(10m)을 이동시킬 것이다. 게임이 만약 30 FPS로 실행되고 있다면 Update() 메서드는 1 프레임 단위로 실행되는 메서드이므로, ..