[Unity] Tag와 Layer의 성능차이 충돌처리 등을 수행하고 충돌된 물체를 검사할 때 tag를 사용하거나 layer를 사용할 수 있다.이때 tag를 사용하는 것과 layer를 사용하는 것의 성능차이가 궁금해졌다.CompareTag()간단한 문자열 비교 연산.유니티 엔진 내부적으로 최적화 되어 있음gameObject.layer==LayerMask.NameToLayer()레이어 값은 정수형 숫자로 저장되어 있어 매우 가벼움결론별차이 없다..아주 조오금 layer비교가 빠를 수 있다. Unity&C#/Unity 2024.10.28
한글 폰트 범위 update Atals Texture에서범위를 unicode hex로 변경하고 범위를 설정해준다.대상범위한글 자모3130-318F한글AC00-D7A3영어 대문자0047-005A영어 소문자0061-007A숫자0030-0039특수 문자0020-002F,003A-0040,005B-0060,007B-007E20-40,47-7E,3131-318E,AC00-D7A3 Unity&C# 2024.10.27
유닛 스텟에 빌더패턴 적용 유닛에 스텟이 자그마치 변수가 10개다.아이템은 이 스텟들 중에 6개만을 상승 시킬 수 있다.아이템이 아닌 다른 무언가가 이 6개 스텟말고 다른 스텟을 증가 시킬 경우의 수도 있다.이걸 디폴트 매개변수 생성자를 쓰자니 인생이 너무 힘들어질 것 같았다.해결방안으로 빌더 패턴을 적용했다.public enum StatsChangeType{ Add, Multiple, Override,}[Serializable]public class UnitStat{ [SerializeField] private StatsChangeType _type; public StatsChangeType Type => _type; [SerializeField] private int _health; [Se.. Develop_Log 2024.10.25
[DesignPattern] BuilderPattern 복잡한 객체들을 단계별로 생성 할 수 있도록 하는 생성 디자인 패턴점층적 생성자를 제거하기 위한 방법예시public class Sandwitch{ private int cheeze; private int tomato; private int bread; private int jalapeno; public Sandwitch (int bread) { this.bread = bread; } public Sandwitch(int bread, int tomato) { this.bread = bread; this.tomato=tomato; }}윽 벌써 귀찮다. 이렇게 생성자를 한땀한땀 만드는 점층적 생성자를 만들어야 하는 상황.. CS/DesignPattern 2024.10.25
[TrobleShooting] ww로 달리기 구현 블레이드 소울처럼 ww키로 달리거나shift를 눌러 달릴 수 있도록 구현하고 싶었음.결과처음 시도W를 MultiTab / Tap Count 2로 실행함 - 안됨디버깅ww를 누를때 두번째 w를 빠르게 떼야 isRun이 true가 됨을 알게됨.제약사항ww 를 두번째 w를 꾹 눌러 계속 이동할 수 있게 해야 했음.leftshift도 누르고 있을 때 run, 떼면 다시 걷게 해야 함.InputAction.CallbackContext 에서 어떤 키가 눌린 건지는 감별 할 수 없음해결 방법InputAction.CallbackContext에서 지금 인터렉션이 어떤 인터렉션인지는 알 수 있음context.interaction is MultiTapInteraction이를 활용해서 multitab의 tap count를 1.. Develop_Log 2024.10.24
[C++] string to / from string Converting a string to another typestring to int std::stoi()std::string str = "123";int value = std::stoi(str); // value = 123string to long std::stol()std::string str = "123456";long value = std::stol(str); // value = 123456string to longlong std::stoll()std::string str = "1234567890";long long value = std::stoll(str); // value = 1234567890string to float std::stof()std::string str = "3.14";.. Language/C++ 2024.10.24
[C++] 형변환 C 스타일 형변환int a = 10;double b = (double)a; // C 스타일 형변환C++ 스타일 형변환 - 캐스팅 연산자1. static_cast컴파일 타임에 수행되며, 관련 있는 타입들 간의 변환에 사용int a = 42;double b = static_cast(a); // 정수를 실수로 변환double d = 3.14;int i = static_cast(d); // 실수를 정수로 변환 (소수점 이하 버림)### 2. [dynamic_cast](https://learn.microsoft.com/ko-kr/cpp/cpp/dynamic-cast-operator?view=msvc-170)- 런타임 타입 검사- 상속관계에서 안전하게 다운캐스팅할 때 사용- 캐스팅이 실패하면 nullptr반환- 가.. Language/C++ 2024.10.24
[C++] transform 입력 범위의 각 요소에 대해 주어진 함수를 적용하여 다른 범위에 저장하는 역할std::transform(input_begin, input_end, output_begin, unary_op);단항 연산문자열 소문자로 바꾸기#include #include #include #include int main() { std::string str = "Hello, World!"; std::string result; result.resize(str.size());// str의 모든 문자를 소문자로 변환하여 result에 저장std::transform(str.begin(), str.end(), result.begin(), ::tolower);std::cout }- 배열에 각 수를 더하기 - 람다.. Language/C++ 2024.10.24
[DesignPattern] 타입객체 TypeObject Pattern?클래스 하나를 인스턴스 별로 다른 객체형으로 표현할 수 있게 만들어, 새로운 클래스들을 유연하게 만들 수 있게 하는 방법.예제다양한 몬스터를 생성type Object calss 와 typed object class 정의type object object instance : 논리적으로 다른 타입을 의미typed object : 자신의 타입을 나타내는 타입 객체를 참조함.기본적인 타입객체 패턴public class Breed{ private int _health; private float _attack; pubilc Breed(int health, float attack) { health = health; _attack = att.. CS/DesignPattern 2024.10.23
유니티 입문 주차 회고 아쉬운 점Scene을 두사람 이상이 건들면 충돌나기에 테스트는 각자 씬에서, 메인 씬들은 동적으로 생성하기로 함.그럼 Resources로 오브젝트들을 불러와서 생성해주는데, path를 string으로 입력하는게 맘에 안들긴 함. 극복은 하지 못했음.Resource 생성에 String을 대신할 방법?enum으로 만들자.이게 맞나? 엄청나게 큰 enum이 나오거나 여기저기 쪼개면 string이랑 무슨차이?csv파일을 만들자Scene에 생성될 오브젝트들의 이름은 가능하다고 생각UI에서 UI를 불러올때는? 이것도 일일히 테이블을 만드는가..?스포너를 대체 할 방법볼도 아이템도 뭐도 다 생성되는 것들에 대해 스포너를 만들고 싶다. 내 작업 영역이 아니라서 참았다.싱글톤을 줄이고 싶다.책에서 싱글톤을 줄이는 방법이.. Develop_Log 2024.10.22