Unity Action
·
Unity
1. Action Action을 한마디로 설명하자면, 반환값이 없는 함수 포인터라고 할 수 있습니다. Action은 Delegate처럼 함수를 대리자(변수)에 대입해서 사용할 수 있지만, 사용 방법이 훨신 간단하기 때문에 Delgate 대신에 반환 값이 존재하지 않으면Action을, 반환 값이 존재한다면 Func을 사용하는 경우가 많습니다. - Action의 장점 Action을 사용하면 해당 Action의 대리자에 함수를 여러개를 추가할 수 있습니다. 이를 구독한다라고 합니다. 해당 대리자가 호출 될 경우 구독된 모든 함수들이 실행되기때문에 플레이어 사망, 생성과 같은 특정 이벤트가 발생했을 때 실행되야하는 함수들을 대리자에 전부 구독시켜 놓으면 다른 스크립트에서 복잡하게 참조하지 않아도 대리자만 호출하..
#Unity[PhotonPun2] PhotonView, RPC
·
Unity
1. Photon View 포톤으로 네트워크 게임을 제작할 경우 사용자 뿐만 아니라 해당 네트워크에 접속해 있는 다른 플레이어들도 존재합니다. 아무런 세팅을 하지 않았을 경우 플레이어 A가 움직여도, 플레이어 B 입장에서는 플레이어가 A가 움직이지 않습니다. 그 이유는 하나의 게임파일을 같이 사용하는 것이 아니라, 플레이어 A와 B는 둘다 별도의 게임 파일을 가지고 있기 때문입니다. 따라서 A에 변화를 감지해서 B에게도 적용해줄 수 있는 장치가 필요합니다. - 플레이어 움직임 동기화 플레이어의 위치를 동기화 하기 위해서는 반드시 Palyer 오브젝트에 Photon View 컴포넌트가 존재해야합니다. Photon View는 변화를 감지하여 서버에 존재하는 플레이어들에게도 똑같이 적용하는 역할을 합니다. 위..
Unity Animator Controller 변경, RectTransform
·
Unity
1. Animator Controller 변경하는 방법 유니티를 하다보면 Player 오브젝트는 그대로 냅둔 상태에서, Animator 컴포넌트의 Controller만 변경하여 플레이어를 변경하고 싶을 때가 있습니다. 이경우 RuntimeAnimatorContoller의 배열을 만든 뒤 인스펙터 창에서 Animator Controller들을 인덱스 값으로 할당해준 뒤에 원할때 Animator.runtimeAnimatorController를 할당 시킨 인덱스에 존재하는 Animator Controller로 변경해주면 쉽게 플레이어의 애니메이션을 변경 할 수 있습니다. 2. RectTransform 유니티를 하다보면 게임오브젝트의 자식 오브젝트로 Canvas를 넣어서 Text를 표현하는 경우가 생기기도 합니..
Unity Photon 주요 기능들
·
Unity
이번 포스팅은 Photon을 사용하면서 알게된 메서드와 멤버 변수들의 쓰임새를 간략하게 남겨보겠습니다. 세팅 환경은 Photon Pun2를 이용했습니다. 1. Photon 사용하기 에셋스토어에서 Photon Pun2를 받고 네트워크 게임을 만들경우, NetWorkManager 오브젝트를 생성하고, NetworkManager 스크립트를 할당해주는 것이 일반적 입니다. Photon Pun2의 기능을 사용하기 위해선 반드시 Photon.Pun, Photon.Realtime의 NameSpace를 사용해줘야합니다. 이후 MonoBehaviourPunCallbacks를 상속받아야지만, 포톤의 NetWork 기능들을 사용할 수 있습니다. 2. 네트워크 세팅 Puncallbaks를 상속 받았다면, Awak()에 해당 ..
Unity Photon Pun2 연결하는 방법
·
Unity/2D
1. 포톤 연결하는 방법 https://www.photonengine.com/ 1. 포톤 홈페이지에서 로그인 후 새 애플리케이션을 생성을 누른 뒤 Photon 종류를 Pun으로 설정합니다. 2. 이렇게해서 생성된 애플리케이션의 App ID를 복사 합니다. 3. 에셋스토어에서 PUN 2 - FREE를 다운로드 한뒤에 프로젝트에 Import를 합니다. 4. Import를 완료하면 해당 위자드가 뜨는데 이 위자드에 아까 저장해둔 App ID를 붙여넣기하면 연결이 완료됩니다.
Unity 애니메이션 역재생, 전처리기
·
Unity
1. 애니메이션 역재생하는 법 Animator에 연결된 애니메이션의 speed값을 -값, 즉 음수 값으로 지정하면 해당 애니메이션을 역으로 재생할 수 있습니다. 2. 전처리기 유니티에서는 전처리기 지시어를 통해 해당 코드를 컴파일 할 것인지 선택할 수 있습니다. 해당하는 코드가 아닐 경우 자동으로 주석처리되어 컴파일 합니다. #if Unity_EDITOR의 뜻은 유니티 에디터가 실행중이라는 뜻으로 에디터가 실행 중이면 에디터 실행을 종료하겠다는 의미입니다. 여기서 #else는 유니티 에디터가 아닌 다른 경우에 해당하기 때문에 모바일이나 PC 플랫폼으로 해당 프로그램을 실행시 Application.Quit() 즉, 어플리케이션을 종료하는 동작이 실행되게 됩니다. 이처럼 전처리기를 잘 사용하면 플랫폼 대응을..
유니티에서 오브젝트를 찾는 방법
·
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을 체크해주도..