변경
[C#] 배열의 타입을 변경하는 방법 (제네릭 가능)
1. Array 클래스의 ConvertAll 메서드 public static TOutput[] ConvertAll ( TInput[] array, Converter converter); TInput[] array - 특정 타입으로 변환하고 싶은 배열을 전달한다. Convert converter - 배열의 요소를 특정 타입으로 변환하는 변환기를 전달한다. - TInput: 기존 배열의 타입을 설정한다. - TOutput: 변환하고 싶은 타입을 설정한다. ConvertAll() 메서드는 특정 타입으로 변환된 새로운 배열을 반환한다. 다음 예제는 string 타입의 배열을 int 타입의 배열로 변환된 새로운 배열을 반환한다 class Program { public static int stringToInt(st..
[C] 문자열에서 특정 문자 변경, 제거 그리고 중복 제거
// 문자열에서 a 문자를 b 문자로 변경 // @param str 문자열 // @param cmp 바꾸고자 하는 문자 // @param rep 대체 문자 void ReplaceCharacter(char* str, char cmp, char rep) { if (str[0] == '\0') return; if (str[0] == cmp) str[0] = rep; ReplaceCharacter(str + 1, cmp, rep); } // 문자열에서 특정 문자를 제거 // @param str 문자열 // @param cmp 삭제하고자 하는 문자 void RemoveCharacter(char* str, char cmp) { if (str[0] == '\0') return; // 한 칸 씩 땡김 if (str[0..
[Unity] Cinemachine Confiner change - 시네머신 confiner 변경
유니티 내에서 제공하는 시네머신의 속성중 Confiner에서 Bounding Shape 2D를 스크립트에서 제어하는 방법이다. 이를 이용하면 시네머신 1개의 영역을 런타임중 동적으로 할당할 수 있다. using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine; public class ConfinerChange : MonoBehaviour { public static ConfinerChange confinerChangeInstance; public static CinemachineConfiner confiner; void Awake() { confinerChangeInstance = this;..
[Unity] 애니메이션 타입 legacy로 변경하기
1) 외부에서 import한 모델의 경우 import settings의 rig탭에서 애니메이션 타입을 선택할 수 있다. 2) 유니티에서 애니메이션을 생성한 경우에는 다른 방법으로 애니메이션 타입을 변경 해야한다. 아래 예에서 오브젝트의 애니메이션을 생성하였다. 3) controller와 anim파일이 생성되었고 4) 오브젝트에 animator 컴포넌트가 추가된 것을 확인할 수 있다. 5) 이 게임 오브젝트의 애니메이션 타입을 legacy로 변경하려면 먼저 인스펙터에서 아래이미지 우측상단에 표시한 아이콘을 클릭하고 debug를 선택한다. 6) 애니메이션(text.anim)를 선택하고 legacy에 체크하면된다(이 항목은 debug모드에서만 확인가능하다) 유니티에서 애니메이션 타입 legacy로 변경하기 (..
[Unity] 셰이더 프로퍼티 값 (예,색상 변경하기)
매터리얼 프로퍼티 값 변경하기 MeshRenderer.material.Set~ 메소드를 통해 스크립트에서 마테리얼 특정 프로퍼티의 값을 실시간으로 변경할 수 있다. 하지만 이렇게 .material에 접근하여 프로퍼티를 수정하면 이런식으로 마테리얼이 개별 인스턴스로 복제되어, 배칭이 깨지게 된다. (.material에 접근하기만 해도 바로 개별 인스턴스가 생성된다.) 이를 방지할 수 있는 것이 Material Property Block, GPU Instancing이다. Material Property Block을 이용하여 프로퍼티 값을 수정할 경우, 마테리얼의 복사본을 생성하지 않고 값을 수정할 수 있다. 그리고 GPU Instancing을 적용하면 동일 마테리얼에 대해 드로우콜을 통합하여 동적 배칭을 적..
[Unreal] UI를 뷰포트 위치로 치환 및 이동하는 방법 (UI를 마우스의 위치로 또는 반대)
기본적으로 뷰포트의 크기는 현재 게임 화면이다 그 중 제일 보편적인건 fhd 1920 x 1080이다. UI의 위치를 지정할 수 있는 방법이 두 가지가 존재한다. Slot을 이용하는거다 피벗 기준이고, 여기서 주의해야할 게 대상 UI는 다른 UI의 자식으로 들어가야한다. RenderTransform의 Translation 이용하는 것이다, 하지만 RenderTransform은 할당만 가능하지 따로 가져올 방법이 존재하지가 않는다. 주의해야할건 바로 아래의 경우다, Slot이 없을 경우 널 포인터다. 아래는 UI의 위치 > 뷰포트 위치 또는 뷰포트 위치 > UI의 위치로 치환할 수 있는 함수들인데 여기서 UObject*는 GetWorld()로 보내주고 FGeometry&는 현재 UI의 위치에 대한 정보를 ..
[Unreal] C++ 버전 변경(C++ 20기능 사용) 방법과 모듈
언리얼에선 디버그 속성 통해 전체 .sln 파일에 대해 언어를 지정 할 수가 없다. UE 5 기준 전체 언리얼 모듈들은 C++ 17버전으로 작성 되어있다, 따라서 20 버전으로 업그레이드 한 후 참조할 때 에러가 날 수 있다. 각 모듈 Build.cs 파일 내에 // CppStandardVersion.Latest 즉 최신 버전 설정 시 17 버전으로 설정 됨. CppStandard = CppStandardVersion.Cpp17; // C++ 20 기능 사용하고자 할 때 아래와 같이 작성하면 된다. CppStandard = CppStandardVersion.Cpp20; 아래는 현재 사용하고 있는 직접 구현한 모듈들이다. Objects 같은 경우엔 탄알(파티클 이펙트) Niagara System을 사용해야..
비쥬얼 스튜디오 프로젝트명 변경하는 방법
.sln 파일을 메모장에 옮긴 후 색칠한 곳을 본인이 변경하고자 하는 프로젝트 명으로 변경하기, .vcxproj 확장명 유지. P.S. 폴더명과 참조하는 헤더/라이브러리 파일이 있다면 디렉터리도 바꿔줘야 한다.
[Unreal] 클래스 생성 시 소스 파일 기본 주석 제거
클래스 생성 시 헤더 파일과 cpp파일이 아래와 같이 생성된다, 하지만 매번 주석 지우는건 되게 귀찮은 작업이다. 아래 경로를 통해 .h.template 파일과 .cpp.template 파일을 찾는다. 적당하게 메모장으로 옮겨 지울 주석을 찾아본다.