C++ 외부변수 extern 사용법
·
C++
프로그램 도중에 어느파일에서나 공통적으로 사용하고 싶은 전역변수를 원할 때 extern을 통해 변수를 선언하면 됩니다. C++에서 외부변수 extern을 사용하는 방법은 정리하자면 아래와 같습니다. 1. extern 변수를 사용하고 싶은 파일에 extern 변수를 선언합니다. -여기서 주의 해야할 점은 extern 변수는 반드시 하나의 파일에서만 초기화 시켜야합니다. 2. extern 변수를 하나의 파일에서만 초기화 합니다. 글로만 보면 정말 간단하지만 주의해야할 사항이 있기때문에 아래 예시를 들어 설명하겠습니다. 사용예시 위에 작성한 프로그램을 설명하자면 아래와 같습니다. common 헤더파일에 extern int iExtern 변수를 선언합니다. 그리고 common 헤더파일을 각각 main.cpp와 ..
C++ 정적 변수
·
C++
정적 변수는 이름이 내포하고 있는 의미 그대로 "정적인" 변수라고 생각하면 좋습니다. 그렇다고 const 변수 처럼 안에 있는 변수의 값을 바꾸지 못해서 정적인게 아니라. 변수가 선언된 위치에 콕 박혀서 움직이지 않는다고 생각하는편이 좋습니다. Static에 대해 자세하게 설명하기 이전에 Static의 특징을 정리하자면 아래와 같습니다. 1. Static은 서로 다른 파일안에 중복된 이름으로 선언하여도 오류가 발생하지 않는다. 2. Static 변수의 핵심은 외부에서 해당 변수를 쉽게 수정하지 못하게 한다는 점이다. 3. Static 변수는 전역변수와 마찬가지로 데이터 영역을 사용하는 변수이다. - 데이터 영역은 프로그램 시작과 동시에 할당되며 프로그램 종료시 사라진다 4. Static 변수를 함수내에서..
백준 10807
·
알고리즘
문제 : 10807    답안       출력결과
유니티에서 오브젝트를 찾는 방법
·
Unity/3D
유니티에서 오브젝트를 찾는 방법은 아래와 같습니다. 1. GameObject.Find("찾고 싶은 오브젝트 이름"); - 이름으로 오브젝트를 찾아서 gameObject 형식으로 반환 받습니다. 2. GameObject.FindWithTag("찾고 싶은 오브젝트의 태그명"); - 태그로 오브젝트를 찾아서 gameObject 형식으로 반환 받습니다. 3. GameObject_FindGameObjectsWithTag("찾고 싶은 오브젝트들의 태그명"); - 태그로 오브젝트들을 찾아서 gameObject[ ] 형식으로 반환 받습니다. 4. GameObject.Find("찾고 싶은 오브젝트 이름").transform; - 이름으로 오브젝트를 찾아서 transform 형식으로 반환 받습니다. 사용 예시 참고 사항 ..
유니티 3D 플레이어 추적 구현
·
Unity/3D
유니티 3D에서 플레이어를 자동으로 추적하는 적을 만드는 법을 정리해 보겠습니다. 먼저 Window -> AI -> Navigation을 눌러 Navigation 창을 띄워줍니다. 그러면 Inspector 창 옆에 Navigation 창이 뜨게되는데 여기서 Bake탭의 우측하단에 Bake 버튼을 누르면 유니티에서 해당 오브젝트의 3D 모델의 메쉬정보를 기준으로 네비게이션 길을 자동으로 만들어줍니다. 단, 여기서 중요한 점이 Bake를 할 오브젝트는 반드시 static 상태여야만 합니다. 이유는 static상태가 아닐경우 해당 오브젝트의 3D 메쉬정보를 재대로 읽어오지 못할 수 있기 때문입니다. 그러므로 장애물(길)이 될 오브젝트의 Inspector의 static 탭을 눌러 Navigation을 체크해주도..
Unity 3D에서 플레이어 이동시키기
·
Unity/3D
유니티에서 3D 오브젝트로 이뤄진 플레이어를 움직이는 기본적인 방법이 사용된 코드이다. 22번줄 flaot h = Input.GetAxisRaw("Horizontral")은 키보드 A,D, 좌,우 방향키의 입력을 감지해 왼쪽은 -1, 오른쪽은 1의 값을 반환하는 Input 클래스 안에 있는 GetAxisRaw함수를 사용한것이다. 즉 사용자의 키 입력에따라 -1,0,1의 값을 반환하게 된다. 23번줄 float v = Input.GetAxisRaw("Vertical")은 키보드 W,S, 위, 아래 방향키의 입력을 감지해 윗방향은 1, 아래 방향은 -1의 값을 반환하는 코드이다. 이것 또한, 사용자의 키 입력에 따라 -1,0,1의 값을 반환한다. 26번줄 Vector3의 moveDir = (Vector3.f..
C++ 헤더 파일에 함수 기능을 구현해 놓지 않는 이유
·
C++
위 사진 처럼 Func.h 헤더 파일에 함수 선언과 그 기능까지 구현을 해놓을 경우 생기는 문제점에 대해 알아보자. 이후 main과 sub파일에서 Func.h 헤더에 있는 ADD함수를 선언을 할 경우 아래와 같은 에러가 뜨게된다. 함수가 중복돼서 정의되었다는 에러가 뜨게 되는데 그이유를 설명하자면 Func.h 헤더 파일안에는 ADD함수의 기능까지 구현이 돼있는 상태이다. 이상태에서 main과 sub에서 각각 Func.h 헤더를 Include하게되면 두개의 cpp 파일에서 ADD함수의 기능구현을 한것과 마찬가지가 되는것이다. 그 결과 ADD 함수를 중복으로 구현한 것과 동일한 결과를 초래하게되어 오류가 나게 되는것이다. 이러한 이유 때문에 헤더파일에는 함수의 선언만 할뿐 기능까지는 구현하지 않는것이다.
C++ 분할 구현 (헤더 파일)
·
C++
C++에서는 필요한 기능을 구현할때 한 곳에 몰아서 구현하지 않는다. 그 이유는 예를들어 내가 ADD함수(더하기 기능)를 main.cpp에 구현했을 경우에는 기능 하나만 구현되었기 때문에 크게 별 상관이 없겠지만. 점점 규모가 커져서 곱하기, 빼기, 나누기 등 사칙 연산들을 시작으로 추가적으로 더 필요한 기능을 하는 함수들을 main에몰아서 구현하게 되면 코드 줄이 길어질 것이다. 그렇게 되면 한 눈에 내가 어떠한 함수들을 구현했는지 알아보기도 힘들고 수정할때도 불편할 수 있다. 이러한 단점을 커버하기 위해 함수 선언을 모아놓은 헤더 파일과 그 기능들을 구현해 놓은 cpp 파일에 기능을 구현 해놓고 main에서 필요할때마다 꺼내서 사용하는 방법이 사용되는 것이다. 분할 구현의 방법은 아래와 같다. 1. ..