티스토리

hyoomi
검색하기

블로그 홈

hyoomi

hyoomi.tistory.com/m

hyoomi 님의 블로그입니다.

구독자
0
방명록 방문하기

주요 글 목록

  • [Unity] [C#] Header [Header("UI References")] public Text ConnectionStatusText; 공감수 0 댓글수 0 2022. 5. 16.
  • [Unity] [C#] Awake(), Start(), OnEnable(), Update() Awake() 스크립트가 등록된 오브젝트가 최초로 활성화될 때 불리는 함수 Start() 최초로 활성화될 때 한번만 불리는 함수 Update() 오브젝트가 활성화 상태일 때, 프레임마다 호출되는 함수 FixedUpdate() Update()와 마찬가지로 활성화 상태일 때, 지속적으로 호출되지만, 1초에 고정된 횟수만큼 호출 따로 설정하지 않았다면, 기본 물리시간인 0.02초에 한번씩 호출 OnEnable() 활성화 될 때마다 호출되는 함수 OnDisable() 비활성화 될 때마다 호출되는 함수 실행순서 Awake -> OnEnable -> Start -> Update -> LateUpdate 공감수 0 댓글수 0 2022. 5. 16.
  • Unity C# 전처리기 실행 파일 생성 과정 1. 소스 파일 2, 전처리 3. 빌드(컴파일+링크) 4. 실행 파일 생성 전처리란 컴파일 전 소스 파일을 정리하여 정의 된 부분만 컴파일하도록 하는 것 전처리기 지시어 종류 (preprocessor directive) #define 심볼 정의 #undef 심볼정의 해제 #if 조건을 만족하면 컴파일 #elif 위 조건을 만족하지 않고 현재 조건을 만족하면 컴파일 #else 조건을 만족하지 않는다면 컴파일 #endif 조건문 종료 #region 코드 블록 시작 #endregion 코드 블록 끝 Define Symbol https://docs.unity3d.com/kr/530/Manual/PlatformDependentCompilation.html 공감수 0 댓글수 0 2022. 5. 16.
  • unity 로비 만들기 Package Manager에서 PUN2 - Free를 Import한다. GameController 빈 게임 오브젝트를 만들고, GameControlloer.cs 스크립트를 붙인다. [참고] https://doc.photonengine.com/ko-kr/pun/current/demos-and-tutorials/pun-basics-tutorial/lobby 공감수 0 댓글수 0 2022. 3. 3.
  • AsyncOperationHandle와 코루틴 AsyncOperationHandle implements IEnumerator so it can be yielded in coroutines: public IEnumerator Start() { AsyncOperationHandle handle = Addressables.Load("mytexture"); yield return handle; if (handle.Status == AsyncOperationStatus.Succeeded) { Texture2D texture = handle.Result; // Texture ready for use... // Done. Release resource Addressables.ReleaseHandle(handle); } } 비동기 작업이 끝날때까지 대기했다가 아랫.. 공감수 1 댓글수 0 2022. 2. 26.
  • unity 안드로이드 빌드 오류 해결 오류 > 디버그 모드로 서명한 APK 또는 App Bundle을 업로드했습니다. 출시 모드로 APK 또는 Android App Bundle에 서명해야 합니다. 해결법 > Player Setting > Publishing Settings에서 Keystore를 할당한다. 오류 > API 수준 30 이상을 타겟팅해야 합니다. 앱의 타겟팅 API 수준을 30 이상으로 변경하세요. 해결법 > 1. 안드로이드 스튜디오에서 수동으로 API 30을 다운로드 받는다. 2. 다운받은 API 30을 복사해서 아래 위치에 붙여넣기 한다. C:\Program Files\Unity Editor\2019.4.31f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms 오류> 인텐트 .. 공감수 0 댓글수 0 2022. 2. 18.
  • Photon PUN2를 이용한 Multiplayer 게임 만들기 1 0. Photon 사이트 회원가입 https://www.photonengine.com/zh-CN/Photon Multiplayer Game Development Made Easy | Photon Engine Cookie Settings Photon uses cookies to identify you as logged-in user, to improve your experience and for marketing. Review and manage your cookie settings below to control your privacy. For more information on how we use cookies and what each cookie stand www.photonengine.com 1. P.. 공감수 0 댓글수 0 2022. 2. 9.
  • 이력서 작성법 1. 성취한것 위주로 (x) ~버그를 고쳤다. ~어플리케이션을 개발했다. => 했던 일 나열 x (o) ~버그를 고쳐서 어플의 속도를 ~% 향상 시켰다. 어플리케이션을 ~개월 안에 개발했고 ~명의 사용자가 이용하는 어플이다. => 내가 이룬 성취에 초점을 맞추기 2. 수치화된 결과로 (ex) 어플리케이션의 성능 스피드를 10% 개선했다. 3. 타겟을 잘 선정 각 회사마다 찾는 스킬, 인재가 다르다. 제일 위에 있는 항목이 우선순위가 높다. 4. 누구나가 이해하도록 비전공자도 이해할 수 있는 단어를 사용하기. 5. 깨끗, 간결, 문법 6. 전략적으로 구조 작성 회사가 원하는 스킬들을 한 눈에 볼 수 있도록 정리. [출처] https://www.youtube.com/watch?v=9DgiHU-_4dY 공감수 0 댓글수 0 2021. 10. 31.
  • git과 github 기초 [출처] https://www.youtube.com/watch?v=Z9dvM7qgN9s&t=813s git add .을 하면 working directory에 있는 untrack된 파일들이 모두 staging area로 간다. git commit -m "first commit" git coomit -am "second commit" : add와 commit을 동시에 공감수 0 댓글수 0 2021. 10. 8.
  • Unity로 2D게임 만들기 2 - 착지 오류 고치기 착지 바운스 오류 이전 포스팅에서 만든 게임을 플레이해보면 중력으로 인해 캐릭터가 떨어지면서 약간의 바운스가 있는걸 확인할 수 있다. 이를 해결하기 위해서 캐릭터의 Rigidbody2D 컴퍼넌트에서 Collision Detection*을 Continuous로 바꿔준다. * Collision Detection(충돌 감지) 물리 엔진은 매 연산 주기마다 각 Collider들의 충돌을 검사한다. 충돌을 검사하는 방식은 크게 Discrete와 Continuous로 나눌 수 있다. Continuous는 동적 콜라이더(RigidBody 있음)에는 Discrete(불연속) 충돌, 정적 메쉬 콜라이더(RigidBody 없음)에는 Continuous(연속) 충돌을 적용한다. (물리 연산 성능에 크게 영향을 주기 때문에,.. 공감수 0 댓글수 0 2021. 10. 7.
  • Unity로 2D게임 만들기 1 - 배경 설정 및 타일맵 꾸미기 에셋 받아오기 Window > Package Manager > My Assets > Sunny Land > import 배경 꾸미기 1. back.png를 Hierarchy에 추가 2. background는 가장 뒤에 배치되어야 하기 때문에 Sorting Layer를 추가해준다. Inspector에서 Sorting Layer > Add Sorting Layer 3. Background와 Foreground를 추가하고 Background가 제일 위, Foreground가 제일 아래 오도록 순서를 바꾼다. 위에 있는 Layer가 가장 뒤에 배치된다. 4. back의 Sorting Layer를 Default에서 Background로 바꿔준다. 5. middle.png를 적당히 배치한다. 6. Inspector.. 공감수 0 댓글수 0 2021. 10. 6.
  • 게임 서버 멀티쓰레드 개론 쓰레드 공유 - heap영역, static 개별 - stack영역 쓰레드가 동시에 공유 영역에 접근하면 문제가 된다! 쓰레드 생성 c# Thread는 IsBackground = false가 default다 즉, 디폴트는 forward에서 thread가 동작한다 백그라운드 thread는 메인스레드가 꺼지면 자동으로 꺼진다! ThreadPool 에 있는 쓰레드는 background로 동작한다 ThreadPool을 사용할 때는 가급적 짧은 일을 주는것이 좋다. 풀이 사용할 수 있는 스레드는 제한적이기 때문이다. 스레드 풀은 n명이 대기중인 인력사무소에서 알바를 고용하는 것에 비유할 수 있다. 알바는 주어진 일이 끝나면 인력사무소로 되돌아간다. Task에 LoogRunning 옵션을 추가하면 T.. 공감수 0 댓글수 0 2021. 7. 14.
  • 1.10 벤치마킹 벤치마킹 공감수 0 댓글수 0 2021. 5. 25.
  • 1.9 컨테이너 어댑터 컨테이너 어댑터(container adaptor) 종류: std::stack, std::queue, std::priorty_queue std::stack LIFO(Last In First Out) 후입선출 구조를 사용 std::deque을 기본 컨테이너로 사용하여 만들어진 래퍼. 멤버 함수 empty(), size(), top(), push(), pop(), emplace() 등 컨테이너 지정하기 std::stack st; 스택의 모든 연산은 시간 복잡도가 O(1)이다. [참고] 스택에서 기본 컨테이너로 함수 호출을 전달하는 과정은 모두 인라인(inline)형식으로 호출될 수 있어서 여기서 발생하는 오버헤드는 없다. std::queue FIFO(First in First Out) 선입선출 구조. std:.. 공감수 0 댓글수 0 2021. 5. 24.
  • 1.8 deque 덱 (deque) : 양방향 큐(double-ended queue) c++ 표준은 덱의 동작에 있어서 다음 조건을 만족해야 한다고 규정한다. 1. push_front(), pop_front(), push_back(), pop_back() 동작이 O(1) 시간 복잡도로 동작 2. 모든 원소에 대해 임의 접근 동작이 O(1) 시간 복잡도로 동작해야 한다. 3. 덱 중간에서 원소 삽입 또는 삭제는 O(n) 시간 복잡도로 동작해야 하며, 실재로는 최대 n/2단계의 시간 복잡도로 동작한다. 덱은 크기가 같은 여러 개의 메모리 청크를 사용하여 데이터를 저장한다. 모든 메모리 청크 주소를 연속적인 메모리 구조에 저장해놓고 사용하면 O(1) 시간 복잡도로 원소의 임의 접근이 가능해진다. 덱의 멤버함수 push_fron.. 공감수 0 댓글수 0 2021. 5. 23.
  • 1.7 std::list std::forward_list의 단점: 리스트 끝에 원소 추가, 역방향 이동, 리스트 크기 반환 등의 기능을 제공하지 않는다. std::list 양방향 연결 리스트. 이중 연결 리스트다. std::list멤버 함수 insert() emplace() push_back() emplace_back() pop_back() [참고] std::forward_list와 std::list의 push_front(), insert(), pop_front(), erase() 함수의 시간 복잡도는 같지만, 실제로는 list가 두배의 연산을 수행해야한다. 이중 연결 리스트는 한 노드에 두 개의 포인터를 갖고 있기 때문! #include #include int main(){ std::list list0 = {1, 2, 3}; .. 공감수 0 댓글수 0 2021. 5. 22.
  • 1.6 iterator iterator(반복자) 임의 접근 반복자(randomaccess iterator): 벡터와 배열 같이 연속된 자료구조를 사용하여 특정 위치의 원소에 곧바로 접근 할 수 있는 iterator. 순방향 반복자(forward iterator): std::forward_list와 같이 증가 연산만 가능한 iterator. - advance(iterator, distance): 반복자를 거리 값만큼 증가시킨다. - next(반복자, 거리), prev(반복자, 거리) : 반복자+거리 위치의 반복자를 반환한다. 1. 임의 접근 반복자: 시간복잡도 상수 시간 2. 나머지 반복자: 선형 시간 벡터 반복자의 덧셈 뺄셈 연산: O(1) forward_list반복자의 덧셈 연산: O(n) 연속적인 순회를 통해서만 특정 원소.. 공감수 0 댓글수 0 2021. 5. 20.
  • 1.5 std::forward_list array와 vector 같은 연속된 자료구조에서 데이터 중간에 원소를 삽입하거나 삭제하는 작업이 매우 비효율적이다. -> 연결 리스트 사용 std::forward_list 원소 삽입 push_front(): 연결 리스트 맨 앞에 새로운 원소 삽입 insert_after(): 특정 원소 뒤에 새로운 원소 삽입 시간복잡도 O(1) std::forward_list fwd = {1, 2, 3}; fwd.push_front(4);// {4, 1, 2, 3} auto it = fwd.begin(); fwd.insert_after(it, 5); // {4, 5, 1, 2, 3} emplace_front()와 emplace_after()함수 제공. 삽입 함수와 같은 기능을 수행하지만 추가적인 복사 또는 이동을 하지 .. 공감수 0 댓글수 0 2021. 5. 19.
  • 1.4 std::vector std::array의 단점 1. array의 size 변경 불가능 -> 원소의 삽입, 삭제 불가능 2. 항상 stack 메모리 사용 std::vector 가변 크기 배열 선언 및 초기화 //크기가 0인 벡터 선언 std::vector v0; //크기가 3인 벡터의 원소 값 지정 std::vector v1 = {1,2,3}; //모든 원소가 0으로 초기화 된, 크기가 3인 벡터 선언 std::vector v2(3); //크기가 3이고, 모든 원소가 1로 초기화된 벡터 선언 std::vector v3(3, 1); 원소 추가 push_back(): 벡터의 맨 마지막에 새로운 원소 추가 //의사코드(pseudocode) push_back(val): if size < capacity 마지막 원소 다음에 val 저.. 공감수 0 댓글수 0 2021. 5. 18.
  • 1.3 std:array 배열의 단점 1. 메모리 할당과 해제를 수동으로 처리해야 한다. 2. [ ] 연산자에서 배열 크기보다 큰 원소를 참조하는 것을 검사하지 못한다. -> segmentation fault 발생 가능 3. 깊은 복사가 자동으로 이루어지지 않는다. * 깊은 복사: 새 사본의 객체 생성됨. 서로 독립적. * 얕은 복사: 동일한 객체를 참조. 변경사항 공유. std::array 메모리를 자동으로 할당하고 해제한다. //std::array 배열 선언과 초기화 std::array arr1; for(int i = 0; i < arr1.size(); i++) arr1[i] = i; std::array arr2 = {1, 2, 3}; 함수에 std::array 객체를 전달할 경우, 자동으로 깊은 복사가 이루어진다. iter.. 공감수 0 댓글수 0 2021. 5. 17.
  • Git 시작하기 github 1. [Repositories] -> [New] -> [Create repository] 생성 완료된 모습 GitHub Desktop 1. [File] -> [Clone a repository] -> 해당하는 [Owner/RepositoryName] 선택 -> [Clone] VSCode 1. clone 받은 폴더를 open한다. 2. 새로운 파일을 만들고 코드를 작성한다. Cmder 1. clone 받은 폴더 경로로 찾아간다. > cd folder_name 2. 상태 확인 > git status 3. add > git add file_name.css 4. commit > git commit -m "commit_message" 5. push > git push > user_name입력 > pa.. 공감수 0 댓글수 0 2021. 5. 16.
  • 1.2 연속된 자료구조와 연결된 자료구조 연속된 자료구조(contiuous data structures) 모든 원소를 단일 메모리 청크(chunk)에 저장 data[0] | data[1] | data[2] BA | BA+ sizeof(type) | BA + 2 * sizeof(type) 첫번째 원소의 메모리 주소: 시작주소(BA, Base Address) i번째 원소의 메모리 주소: BA + i * sizeof(type) 위 수식을 이용하여 모든 원소에 접근 가능 -> 데이터 접근 시간 O(1)로 항상 일정 - 배열 1. 정적배열 스택(stack)메모리 역역에 할당. 함수를 벗어날때 자동으로 해제 2. 동적배열 힙(heap)영역에 할당. 직접 해제 - 캐시 지역성(cache locality): 하나의 원소에 접근할 대 옆에 있는 원소 몇 개도 .. 공감수 0 댓글수 0 2021. 5. 16.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.