분류 전체보기

    [Unity] UnityWebRequest.Post을 사용한 json전송의 문제

    [Unity] UnityWebRequest.Post을 사용한 json전송의 문제

    어떤 문제? 프로젝트에서 사용하고 있는 유니티 에디터 버전: 2020.3.42f1 //ex_WWW는 UnityWebRequest객체 ex_WWW = UnityWebRequest.Post(ex_URL, data); //data는 json을 string으로 변환한 것 ex_WWW.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); ex_WWW.SetRequestHeader("Content-Type", "application/json"); 위처럼, UnityWebRequest.Post를 사용해서 string형식의 json을 바로 보내려고 시도하면 이론상 정상적으로 보내져야 하지만, 현재 제대로 보내지지 않습니다 패킷을 확인해보아도 JSON이 아닌,..

    [Unity] PlayerPrefs을 활용한 데이터 저장

    PlayerPrefs란? 유니티에서 데이터 관리를 위해 제공해주는 클래스입니다. int, float, string, bool 타입의 변수를 저장/불러오기 기능을 제공해줍니다. 멤버 함수 * DeleteAll => 모든 키 값을 삭제 * DeleteKey => 특정 키 값을 삭제 * GetFloat => 지정한 float 타입의 키 값을 로드 * GetInt => 지정한 int 타입의 키 값을 로드 * GetString => 지정한 String 타입의 키 값을 로드 * HasKey => 해당 키가 존재하는 여부를 반환 * Save => 변경된 모든 키 값을 물리적인 저장 공간에 저장 * SetFloat => 지정한 키로 float 타입의 값을 저장 * SetInt => 지정한 키로 int 타입의 값을 저장..

    [C++ 서버] 여러개의 lock을 잡을때

    [C++ 서버] 여러개의 lock을 잡을때

    std::lock(), std::adopt_lock mutex m1; mutex m2; std::lock(m1,m2); //내부적으로 정한 방식에 의해서 항상 동일한 순서로 m1,m2의 lock을 걸어줍니다. //먼저 lock걸리는것이 무엇인지는 모르지만 매번 그 순서는 동일합니다. lock_guard g1(m1,std::adopt_lock); lock_guard g2(m2,std::adopt_lock); //std::adopt_lock : 이미 lock된 상태니까, 나중에 소멸될 때 unlock 해줘! std::lock()을 통해서 일정한 순서를 유지한채 lock을 걸 수 있습니다. 2개 이상의 mutex가 들어 갈 수 있습니다. 무엇이 먼저 lock걸릴지는 모르지만 항상 그 순서는 일정합니다. loc..

    [C++ 서버] Lock 기초(mutex)

    mutex를 활용한 lock #include "pch.h" #include #include #include vector v; mutex m; void Push() { for (int32 i = 0; i < 10000; i++) { //자물쇠 잠그기 m.lock(); v.push_back(i); //자물쇠 풀기 m.unlock(); } } int main() { std::thread t1(Push); std::thread t2(Push); t1.join(); t2.join(); } lock(), unlock()을 통해서 상호배제(Mutual Exclusion)을 수행합니다. (뮤텍스와 세마포어의 차이가 궁금하다면? 링크) std::lock_guard의 원리 위처럼 lock(), unlock()을 사용자가 ..

    [C++서버] Atomic

    [C++서버] Atomic

    Atomic의 필요성 #include #include int sum = 0; void Add() { for (int32 i = 0; i < 100'0000; i++) { sum++; } } void Sub() { for (int32 i = 0; i < 100'0000; i++) { sum--; } } int main() { std::thread t1(Add); std::thread t2(Sub); t1.join(); t2.join(); cout

    [C++서버] 쓰레드 기초

    [C++서버] 쓰레드 기초

    쓰레드 생성(std::thread) #include #include //헤더파일 void HelloThread() { cout

    [Unity] UI에서 블로커 구현하기

    [Unity] UI에서 블로커 구현하기

    블로커란? 위처럼 게임 옵션ui를 켰을때, ui를 제외한 다른 부분은 클릭을 눌러도 반응하지 않게 구현하고 싶을때가 있습니다. 이럴때 블로커를 구현하여서 개발자의 의도대로 옵션ui만 클릭이 되도록 할 수 있습니다. 블로커 구현 1. 블로커를 구현하고자 하는 UI 프리팹을 선택합니다. 2. image 오브젝트를 추가해줍니다. 전 이름을 Blocker로 바꾸겠습니다.(자유) 그리고 크기를 카메라를 다 덮을 크기로 설정해줍니다. 3. 방금 생성한 image의 Color속성에서 A(투명도 값)을 0으로 설정해줍니다. 그럼 투명한 Blocker가 됩니다. 그리고 반드시 Raycast Target이 체크되어 있어야합니다. 4. 반드시 Blocker는 가장 위로 올려줘야 합니다. 아래서부터 위로 인식하기 때문에, 가..

    [Unity] 현재 애니메이터의 상태(state), 파라미터 값 아는 방법

    [Unity] 현재 애니메이터의 상태(state), 파라미터 값 아는 방법

    상태 아는 방법 상황: 현재 Hit애니메이션이 실행중인지를 알고 싶을때 anim = GetComponent(); anim.GetCurrentAnimatorStateInfo(0).IsName("Hit") 애니메이터.GetCurrentAnimatorStateInfo(해당 레이어의 인덱스).IsName(스테이트의 이름) 을 통해서 알 수 있습니다. true/false를 반환해줍니다. 파라미터 값 아는 방법 anim.GetCurrentAnimatorStateInfo(0).speed; 애니메이터.GetCurrentAnimatorStateInfo(해당 레이어의 인덱스).파라미터이름 을 통해서 알 수 있습니다. 리턴값은 AnimatorStateInfo입니다. 공식 문서 링크